0

我发现 JWT 解析和 JwtValidators 有一个奇怪的行为。

设想:

  • Spring Boot OIDC 客户端(目前是一个小型 Web 应用,仅显示登录用户和 Spring 提供的一些 OIDC 对象)
  • 自定义JwtDecoderFacotry<ClientRegistration>ID-Token 验证
  • JwtValidatorFactory基于JwtValidators.createDefaultWithIssuer(String)

这适用于 Spring Boot 版本 <= 2.2.10。

调试:

  • NimbusJwtDecoder(JAR spring-security-oauth2-jose) 使用声明集转换器。'iss'(颁发者)声明作为 URL 处理。
  • JwtIssuerValidator(由 内部创建JwtValidators.createDefaultWithIssuer(String))包装一个JwtClaimValidator<String>.
  • 这个最后equals()总是调用它false-它将字符串与 URL 进行比较。

我目前的解决方法不是调用JwtValidators.createDefaultWithIssuer(),而是使用验证器new JwtTimestampValidator()和自己的实现OAuth2TokenValidator<Jwt>(使用 wrapping JwtClaimValidator<URL>)。

还有其他人遇到这个问题吗?

- 基督教

4

1 回答 1

0

这是一个错误。拉取请求已创建。

于 2020-10-25T06:36:51.143 回答