可以将JSON Web Encryption(JWE)与Spring Security OAuth2 JWT一起使用吗?
现在我有一个如下的JwtAccessTokenConverter
:
@Bean
public JwtAccessTokenConverter accessTokenConverter() {
JwtAccessTokenConverter converter = new JwtAccessTokenConverter() {
@Override
public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
DBUserDetails user = (DBUserDetails) authentication.getUserAuthentication().getPrincipal();
final Map<String, Object> additionalInfo = new HashMap<>();
additionalInfo.put("user_id", user.getUser().getId());
((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo);
OAuth2AccessToken enhancedToken = super.enhance(accessToken, authentication);
return enhancedToken;
}
};
converter.setSigningKey(jwtAccessTokenConverterSigningKey);
DefaultAccessTokenConverter accessTokenConverter = new DefaultAccessTokenConverter();
DefaultUserAuthenticationConverter userTokenConverter = new DefaultUserAuthenticationConverter();
userTokenConverter.setUserDetailsService(userDetailsService);
accessTokenConverter.setUserTokenConverter(userTokenConverter);
converter.setAccessTokenConverter(accessTokenConverter);
return converter;
}
如何在这里添加JWE支持?
1条答案
按热度按时间zf9nrax11#
您可以在Spring Oauth2 resource-server中使用不透明令牌支持。这意味着您的用户可以提供编码的JWT令牌(JWE),并且您的Spring后端应用程序将能够将令牌转换为Principal对象,而无需任何额外的代码。
如果您的OAuth2服务器提供introspection endpoint,这是可能的。
spring-boot-starter-oauth2-resource-server:3.1.2
的配置非常简单:在Java配置中,通过向SecurityWebFilterChain添加以下内容来启用不透明令牌支持:
文件:Spring Security 6.1.2 docs