Spring Security oauth2客户端-如何获取JWT令牌

爱德华·泽伯

我正在尝试使用spring-security-oauth2-clientspring-security-oauth2-jose针对Azure AD进行身份验证并获取JWT令牌。登录部分有效,但是我收到的令牌不是JWT。这是我的配置:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired
private OAuth2UserService<OidcUserRequest, OidcUser> oidcUserService;


@Override
protected void configure(HttpSecurity http) throws Exception {
    http
    .authorizeRequests()
    .anyRequest()
    .authenticated()
    .and()
    .oauth2Login()
    .loginPage("/oauth2/authorization/azure")
    .userInfoEndpoint()
    .oidcUserService(oidcUserService);
}

}

认证之后,我从安全上下文中检索令牌,如下所示:

OAuth2AuthenticationToken authentication = (OAuth2AuthenticationToken) 
SecurityContextHolder.getContext().getAuthentication();
OAuth2AccessToken accessToken = authorizedClientService.loadAuthorizedClient(
            authentication.getAuthorizedClientRegistrationId()
            ,authentication.getName()
            ).getAccessToken();

我得到一个Bearer令牌,看起来像:

“AQABAAAAAADXzZ3ifr-GRbDT45zNSEFElTInSJQ19I2zONWkrBPgoKf8MCYL_z_IzU2lmF_ZadgBMdCr337faL0bpqHAzmFhsxq8peWUX7iYeTLbmcHDIdCR617VSKKHISLn_AiXhNr9rF6AMSrQTzdV2mKhEVlycTXlHUsZkA-gMA4z4FQFQMYkFNcLKqr7b-NewnV07lbG55joRIkcCMDrM1s4X8mRcJpRF6ek1yNSpveFmlbkrt3cXPUqtDe5EWI_5gfuGEVIon57LFLos_JtcQWSL6CTrUlY8EuF8MVuwJpTNG3OR80ikK7ycH_dXFCYmYDRrtTbFkf3R61aDSnqEUe2IIl2T8QdqWqH65ykSVooG6uIi5KsRK9zXPRuRuC_XC5w6SCcGionQYIgSEp-kCtIzlfHIBRK2o_CpjYVMBdmbfIkCvFoTGGGAvpOP1_MkgVeBiQzYFg8m_dn_roXFF17oBhCdYrZ2Y41_-GngLU3VJj4ltFIxzRziH6CZ2aFl1N3MwzIUcTiN6Ci0oyODTsSNDPc2zvxg609SjEqrO-6Xp0LMEwiOgY5L5rrcLA5d4LN-Xq9NiG0KqybZPU7wW0AHNA2Nw7bSg1Cle0ReaBU4ANbkjHxYeQJf65-ONNMGdfkV8xlKtRXZoiOBFip87Z72cS4NjLjM3x9_Qk9MQ5eGQTNj4fHCzJp9ukcjQ1MSUol_VIgAA”

然后被Microsoft Graph API拒绝。任何帮助或建议,我们将不胜感激。

阿德尔·沙欣(Adel Shahin)

我能够找到解决方案。您得到的是返回的授权码。要获取访问令牌,请使用以下命令:

public void getToken(OAuth2AuthenticationToken oAuth2AuthenticationToken, @AuthenticationPrincipal(expression = "idToken") OidcIdToken idToken) {

System.out.println(idToken);

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何刷新的OAuth2令牌使用Spring Security 5 OAuth2用户端和RestTemplate

Spring Security OAuth2客户端-重定向过多

用于Spring Security OAuth2的Web和移动客户端

用于2足(客户端凭据)OAuth2服务器的Spring-security上下文设置

我如何通过令牌而不是cookie中的jsession来访问Spring oauth2客户端后端api?

弃用spring-security-oauth作为客户端

Spring Security OAuth 2:如何在JavaScript客户端中使用访问令牌

如何使用Spring Boot伪装客户端进行Oauth2身份验证?

Spring Security 5 OAuth2客户端密码授予类型

Spring Security中具有密码授予权限的oAuth2客户端

在Spring Security OAuth中,如何将passwordEncoder用于客户端机密?

如何将Spring Security OAuth 2.0客户端存储配置为数据库

如何覆盖Spring Cloud OAuth2客户端自动配置?

客户端机密+在Spring OAuth2中刷新访问令牌

Spring Security 5.1.1 OAuth2客户端连接到spring-security-oauth2身份验证服务器

如何在Spring Boot OAuth2服务器中启用多个客户端ID?

Spring Security OAuth2是否通过PKCE支持浏览器(Angular)客户端的授权代码流?

Spring Boot 2 OIDC(OAuth2)客户端/资源服务器未在WebClient中传播访问令牌

Spring OAuth2 Security中如何在SuccessHandler登录后立即获取访问令牌?

Spring Security,OAUTH2,动态客户端秘密

如何使用Spring在OAuth2身份验证中生成客户端密钥

Spring Security OAuth 2和客户端凭证流

Spring Security Oauth2资源所有者密码流:当我发送REST请求时,我的用户详细信息服务始终获取客户端ID而不是用户名

使用XML作为授权码的示例Spring Security OAuth2客户端配置在哪里?

使用授权代码授权和 JWT 使用 OAuth2 通过 spring boot 登录到客户端

Spring Boot 2.0 M6 (Spring Security 5.0) 中的 oAuth2 REST 客户端

Spring security Oauth2 客户端凭据水平扩展

通过 Spring Security OAuth2 客户端成功匿名身份验证后重定向到特定 URL

如何在spring security oauth2授权服务器中通过jwt令牌获取用户信息?