[英]Spring Boot OAuth2 when implicit JWT is created?
如何从OAuth2 SSO Principal
获取详细信息到我的JWT中? ( OAuth2Authentication
getDetails
实例为OAuth2AuthenticationDetails
getDecodedDetails
返回null
)
我有...
acme
客户端的Angular 6客户端(使用angular-oauth2-oidc
) 具有JWT TokenService
配置的Spring Boot OAuth2授权服务器,带有到GitHub的第三方SSO
身份验证服务器使用acme
配置为implicit
而GitHub客户端配置为SSO
/login/github
验证服务器公开/login/github
/me
(受ResourceServer配置保护) 当我登录...
现在,当我与Auth Service /me
通信时:
Principal
(是) Authorization: Bearer ...
标头传递令牌,我得到了一个Principal
,其中包含acme
客户端(ugh)的最少OAuth客户端信息 我尝试了自定义TokenEnhancer
,但是OAuth2Authentication
实例已经是最基本的没有详细信息的实例。 而且,当从Angular发起调用时,它没有与直接调用时相同的会话cookie(我不想共享会话-我想将详细信息放在JWT中)。
[更新#1]
我尝试了一个自定义的JwtAccessTokenConverter
并在@EnableAuthorizationServer
和@EnableResourceServer
(确保/me
端点)配置类中都使用了它。 但是它没有用。 我仍然从OAuth2Authentication
获得空详细信息。
final JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
converter.setAccessTokenConverter(new CustomTokenConverter());
Spring Lemon这样做的方式是替换OAuth2和OpenID连接用户服务(请参阅spring安全文档 )。 有关详细信息,请参见LemonOAuth2UserService
和LemonOidcUserService
。 为了实现无状态,它会向客户端传递一个短暂的JWT令牌作为targetUrl的参数,如您在OAuth2AuthenticationSuccessHandler
类中OAuth2AuthenticationSuccessHandler
。 它使用某种cookie机制来无状态地进行所有操作,通过查看其HttpCookieOAuth2AuthorizationRequestRepository
及其配置,可以进一步理解。
这是一篇更详细的说明文章: https : //www.naturalprogrammer.com/blog/1681261/spring-security-5-oauth2-login-signup-stateless-restful-web-services 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.