是否可以将 JSON Web 加密(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 支持?
您可以在 Spring Oauth2 资源服务器中使用不透明令牌支持。这意味着您的用户可以提供编码的 JWT 令牌 (JWE),并且您的 Spring 后端应用程序将能够将令牌转换为主体对象,而无需任何其他代码。
如果您的 OAuth2 服务器提供以下功能,这是可能的内省终点 https://datatracker.ietf.org/doc/html/rfc7662.
With spring-boot-starter-oauth2-resource-server:3.1.2
配置很简单:
spring.security.oauth2.resourceserver:
opaque-token:
introspection-uri: <your oauth2 server introspect url>
client-id: <clientId>
client-secret: <clientSecret>
在 Java 配置中,您可以通过添加到 SecurityWebFilterChain 来启用不透明令牌支持:
http.oauth2ResourceServer(rs -> rs.opaqueToken(Customizer.withDefaults()))
文档:Spring Security 6.1.2 文档 https://docs.spring.io/spring-security/reference/servlet/oauth2/resource-server/opaque-token.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)