Spring Boot 2.3.4:JwtValidators.createDefaultWithIssuer(String) 有错误?
Spring Boot 2.3.4: Bug with JwtValidators.createDefaultWithIssuer(String)?
我发现 JWT 解析和 JwtValidator 有一个奇怪的行为。
场景:
- Spring 启动 OIDC 客户端(目前是一个小型网络应用程序,仅显示登录用户和 Spring 提供的一些 OIDC 对象)
- 自定义
JwtDecoderFacotry<ClientRegistration>
用于 ID 令牌验证
JwtValidatorFactory
基于 JwtValidators.createDefaultWithIssuer(String)
这适用于 Spring 引导版本 <= 2.2.10。
调试中:
NimbusJwtDecoder
(JAR spring-security-oauth2-jose) 使用声明集转换器。 'iss'(发行人)索赔被处理为 URL。
JwtIssuerValidator
(由 JwtValidators.createDefaultWithIssuer(String)
内部创建)包装 JwtClaimValidator<String>
.
- 这个最终调用的
equals()
始终是 false
- 它将 String 与 URL. 进行比较
我当前的解决方法不是调用 JwtValidators.createDefaultWithIssuer()
,而是仅使用验证器 new JwtTimestampValidator()
和自己的 OAuth2TokenValidator<Jwt>
实现(使用包装 JwtClaimValidator<URL>
)。
还有其他人遇到这个问题吗?
--克里斯蒂安
这是一个错误。拉取请求已创建。
我发现 JWT 解析和 JwtValidator 有一个奇怪的行为。
场景:
- Spring 启动 OIDC 客户端(目前是一个小型网络应用程序,仅显示登录用户和 Spring 提供的一些 OIDC 对象)
- 自定义
JwtDecoderFacotry<ClientRegistration>
用于 ID 令牌验证 JwtValidatorFactory
基于JwtValidators.createDefaultWithIssuer(String)
这适用于 Spring 引导版本 <= 2.2.10。
调试中:
NimbusJwtDecoder
(JAR spring-security-oauth2-jose) 使用声明集转换器。 'iss'(发行人)索赔被处理为 URL。JwtIssuerValidator
(由JwtValidators.createDefaultWithIssuer(String)
内部创建)包装JwtClaimValidator<String>
.- 这个最终调用的
equals()
始终是false
- 它将 String 与 URL. 进行比较
我当前的解决方法不是调用 JwtValidators.createDefaultWithIssuer()
,而是仅使用验证器 new JwtTimestampValidator()
和自己的 OAuth2TokenValidator<Jwt>
实现(使用包装 JwtClaimValidator<URL>
)。
还有其他人遇到这个问题吗?
--克里斯蒂安
这是一个错误。拉取请求已创建。