问题描述
我发现JWT解析和JwtValidators的行为很奇怪。
场景:
- Spring Boot OIDC客户端(目前仅是一个小型Web应用程序,仅显示Spring登录的用户和一些OIDC对象)
- 用于ID令牌验证的自定义
JwtDecoderFacotry<ClientRegistration>
-
JwtValidatorFactory
基于JwtValidators.createDefaultWithIssuer(String)
这在Spring Boot版本
调试:
-
NimbusJwtDecoder
(JAR spring-security-oauth2-jose)使用声明集转换器。 “ iss”(发布者)声明将作为URL处理。 -
JwtIssuerValidator
(由JwtValidators.createDefaultWithIssuer(String)
内部创建)包装JwtClaimValidator<String>
。 - 此人最终调用了始终为
equals()
的{{1}}-它比较String和URL。
我当前的解决方法不是调用false
,而只是使用验证器JwtValidators.createDefaultWithIssuer()
和new JwtTimestampValidator()
的自己实现(包装OAuth2TokenValidator<Jwt>
)。
还有其他麻烦吗?
-基督徒
解决方法
这是一个错误。拉取请求已创建。