对于资源服务器,它就像下面这样简单
@Bean
fun jwtDecoder(): JwtDecoder {
// makes a request to the JWK Set endpoint
val jwsKeySelector: JWSKeySelector<SecurityContext> = JWSAlgorithmFamilyJWSKeySelector.fromJWKSetURL<SecurityContext>(this.jwkSetUrl)
val jwtProcessor: DefaultJWTProcessor<SecurityContext> = DefaultJWTProcessor()
jwtProcessor.jwsKeySelector = jwsKeySelector
return NimbusJwtDecoder(jwtProcessor)
}
并且它从公钥端点获取算法。
但它不适用于OidcIdTokenDecoderFactory,因为https://github.com/spring-projects/spring-security/blob/6.0.0-M6/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/oidc/authentication/OidcIdTokenDecoderFactory.java会创建一个新的JwtDecoder
有什么想法吗?或者我只能定制一个OidcIdTokenDecoderFactory
?
1条答案
按热度按时间9fkzdhlc1#
OidcIdTokenDecoderFactory
确实是以自定义方式提供客户端所用算法的正确配置钩子。例如,您可以指定下列项目:
请注意,这是一个假设第一个可用算法的简单示例。您可以提供任何所需的逻辑,但它必须返回单个算法。
在#11049中有一些关于这个问题的很好的背景。