Как устранить ошибку [missing_user_info_uri] при авторизации с использованием Oauth2?

Я пытаюсь настроить доступ моего приложения к ресурсам <a href="https://api.hh.ru/openapi/redoc#section/Avtorizaciya" rel="nofollow">Headhunter API</a> с использованием OAUTH2 и столкнулся с ошибкой <i>[missing_user_info_uri] Missing required UserInfo Uri in UserInfoEndpoint for Client Registration</i> после успешной авторизации. Предполагаю, что проблема в некорректной конфигурации, но не могу определить, что именно настроено неправильно. <br/> <br/> У меня есть контроллер защищенной страницы, и при обращении к нему происходит запрос к HH, где авторизация проходит успешно, но затем появляется указанное сообщение об ошибке. <br/> <pre><code class="java">@GetMapping("/hello")
	public String indexToo() {
		return  "Authorized Hello!";
	}</code></pre> <br/> Конфигурация HttpSecurity выглядит следующим образом: <br/> <pre><code class="java">@Override
	protected void configure(HttpSecurity http) throws Exception {
		http
				.authorizeRequests()
						.antMatchers("/", "/error", "/webjars/**").permitAll()
						.anyRequest().authenticated()
				.and()
				.oauth2Login();
	}</code></pre> <br/> <br/> Вот как выглядит мой файл application.properties (данные client-id и client-secret скрыты): <br/> <pre><code>spring.security.oauth2.client.registration.headhunter.client-name=HeadHunter
spring.security.oauth2.client.registration.headhunter.client-id=
spring.security.oauth2.client.registration.headhunter.client-secret=
spring.security.oauth2.client.registration.headhunter.redirect-uri=http://localhost/login/oauth2/code/headhunter
spring.security.oauth2.client.registration.headhunter.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.headhunter.scope=profile email
spring.security.oauth2.client.registration.headhunter.client-authenti
  • 14 октября 2024 г. 12:12
Ответы на вопрос 2
Ошибка `[missing_user_info_uri]` в контексте OAuth2 указывает на то, что в конфигурации вашего приложения отсутствует параметр, который необходим для получения информации о пользователе после успешной авторизации. В этом случае, приложение не знает, откуда получить данные профиля пользователя.

Для решения этой проблемы нужно убедиться, что вы указали правильный `UserInfoUri` в вашей конфигурации. Например, вам нужно добавить следующие параметры в ваш файл `application.properties`:

```properties
spring.security.oauth2.client.registration.headhunter.client-name=HeadHunter
spring.security.oauth2.client.registration.headhunter.client-id=YOUR_CLIENT_ID
spring.security.oauth2.client.registration.headhunter.client-secret=YOUR_CLIENT_SECRET
spring.security.oauth2.client.registration.headhunter.redirect-uri=http://localhost/login/oauth2/code/headhunter
spring.security.oauth2.client.registration.headhunter.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.headhunter.scope=profile email

spring.security.oauth2.client.provider.headhunter.authorization-uri=https://hh.ru/oauth/authorize
spring.security.oauth2.client.provider.headhunter.token-uri=https://hh.ru/oauth/token
spring.security.oauth2.client.provider.headhunter.user-info-uri=https://api.hh.ru/me
spring.security.oauth2.client.provider.headhunter.user-name-attribute=id
```

Обратите внимание на следующие параметры:

1. `spring.security.oauth2.client.provider.headhunter.user-info-uri`: Это URL, который ваш клиент использует для получения информации о пользователе после успешной аутентификации. Убедитесь, что он соответствует реальному URL, предоставляемому Headhunter API для запроса информации о пользователе.

2. `spring.security.oauth2.client.provider.headhunter.authorization-uri` и `spring.security.oauth2.client.provider.headhunter.token-uri`: Убедитесь, что вы указали правильные адреса для авторизации и получения токена.

3. Убедитесь, что у вас также есть правильные значения для `client-id` и `client-secret`, а также, что ваш редирект-URI зарегистрирован в настройках приложения на Headhunter.

После внесения этих изменений перезапустите ваше приложение, и ошибка должна исчезнуть, а возможность получать информацию о пользователе должна заработать.
Ошибка [missing_user_info_uri] возникает, потому что Spring Security ожидает URL для получения информации о пользователе (UserInfo endpoint) в конфигурации, но ты не указал его для провайдера OAuth2. В случае с Headhunter API этот endpoint отсутствует в стандартной конфигурации, поэтому его нужно указать вручную. 

Попробуй добавить в свой application.properties параметр user-info-uri, чтобы указать Spring, где получать данные о пользователе

После этого Spring должен корректно получать информацию о пользователе через UserInfo endpoint, и ошибка должна исчезнуть.

Если не совсем понятно, напиши, попробую составить пример
Похожие вопросы