код авторизации из Azure AD OAuth2AuthorizationResponse - PullRequest
0 голосов
/ 25 сентября 2018

Я получил пример Springboot Active Directory и работает, как указано здесь:

https://github.com/Microsoft/azure-spring-boot/tree/master/azure-spring-boot-samples/azure-active-directory-spring-boot-backend-sample

Я могу войти в систему с использованием своих учетных данных Azure AD, используя идентификатор клиента, который я создали предоставил разрешения «Windows Azure Active Directory».

Следующим шагом я хотел бы получить изображение профиля пользователя, вошедшего в систему, поэтому мне нужно получить код авторизации из OAuth2AuthorizationResponse

Мне не понятно, как получить доступ к этим данным.Он не доступен в возвращенном объекте OAuth2User

Я попытался настроить HandlerInterceptor на / login / oauth2 / code / azure, чтобы я мог перехватить Ответ, но это никогда не получит (?)

Я также попытался добавить пользовательский фильтр:

http.addFilterAfter(
              new CustomFilter(), BasicAuthenticationFilter.class)

, но это никогда не срабатывает для /login/oauth2/code/azure URI

1 Ответ

0 голосов
/ 26 сентября 2018

Мне удалось перехватить ответ Аутентификации, переопределив SavedRequestAwareAuthenticationSuccessHandler и добавив его в свою конфигурацию безопасности:

http....
 .and().oauth2Login().successHandler(authCodeCachingSuccessHandler)

, где я кеширую код и передаю суперклассу для обработки:

 @Override
 public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws ServletException, IOException {

    Map<String, String[]> parameterMap = request.getParameterMap();
    String[] s = parameterMap.get("code");
    tokenCache.setAuthCode( (DefaultOidcUser) authentication.getPrincipal(), s[0] );

    super.onAuthenticationSuccess(request, response, authentication);
 }

Я сомневаюсь, что это «лучшая практика», но она работает, и мне еще предстоит найти более элегантный способ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...