代码之家  ›  专栏  ›  技术社区  ›  Black

来自Azure AD OAuth2AuthorizationResponse的授权代码

  •  0
  • Black  · 技术社区  · 6 年前

    我已经按照这里的说明启动并运行了Springboot Active Directory示例:

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

    我可以使用我创建并授予“Windows Azure Active Directory”权限的客户端ID,使用我的Azure AD凭据登录。

    下一步是我想获得登录用户的个人资料图片,所以我需要从 OAuth2AuthorizationResponse

    我不清楚如何获取这些数据。它在返回的OAuth2User对象中不可用

    我试着在/login/oauth2/code/azure上设置HandlerInterceptor,这样我就可以截获响应,但这永远不会被命中(?)

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

    但这永远不会因为 /login/oauth2/code/azure URI

    1 回复  |  直到 6 年前
        1
  •  0
  •   Black    6 年前

    我可以通过重写 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);
     }