Spring Security OAuth2 JWT 中的 JWE

2024-05-09

是否可以将 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(使用前将#替换为@)

Spring Security OAuth2 JWT 中的 JWE 的相关文章

随机推荐