Я пытаюсь настроить доступ моего приложения к ресурсам <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
Ошибка `[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, и ошибка должна исчезнуть.
Если не совсем понятно, напиши, попробую составить пример