我有一个本地运行的OpenID提供程序(openam
)。我使用的是自签名证书,jwks URL是@ https://localhost:8443/openam/oauth2/connect/
由于SSL证书是自签名的,当OIDC令牌被解码时,我得到SSLHandshake异常。我尝试使用自定义REST模板,创建自定义JwtDecoder
(如www.example.com所建议https://docs.spring.io/spring-security/site/docs/current/reference/html5/#oauth2resourceserver-jwt-decoder-dsl)
@Bean
public JwtDecoder jwtDecoder() {
NimbusJwtDecoder.withJwkSetUri("https://localhost:8443/openam/oauth2/connect").restOperations(myCustomRestTemplateThatAllowsSelfSignedCerts()).build();
}
字符串
但这个解码器似乎没有被使用。OidcIdTokenDecoderFactory
用于创建解码器。这个类似乎不允许我们传入一个自定义的jwtDecoder。
为什么oauthResourceServer().jwt().decoder(customDecoder())
不工作?如何让解码器与一个具有自签名证书的网站的jwks URI一起工作?
我正在考虑的一个选择是将自签名证书添加到jdk的cacerts文件夹中。
1条答案
按热度按时间eit6fx6z1#
OAuth2LoginAuthenticationFilter
正在调用OidcAuthorizationCodeAuthenticationProvider
进行OpenID身份验证。要更改它使用的JwtDecoder
,您应该有一个JwtDecoderFactory
bean。例如,您可能有类似的内容:
字符串
希望这至少回答了你的部分问题。