spring-boot - Spring Boot 2.3.4:JwtValidators.createDefaultWithIssuer(String) 的错误?
问题描述
我发现 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>
)。
还有其他人遇到这个问题吗?
- 基督教
解决方案
这是一个错误。拉取请求已创建。
推荐阅读
- python - Flask:如何以编程方式重新启动 Azure App
- amazon-ec2 - EC2 上的 Gatsby 没有外部连接
- go - 如何在 Go 中模拟 Stripe?
- wix - 在 wix 的 arp 窗口中获取完整版本 01.00.00.0000 而不是版本 1.0.0.0
- php - Ajax 调用不传递 php 变量
- javascript - 在数组中找到两个数字的最佳方法,它们的总和是特定数字
- kubernetes - 如何在 istio kubernetes 集群中拒绝默认但允许 HTTP 和 TCP 流量?
- safari - 使用 Xcode 12 将 WebExtensions API(Chrome、Firefox)转换为 Safari
- ubuntu - ansible playbook 变量的值如何在另一个 paybook 中使用?
- ibm-cloud - Watson Assistant 提取多个模式实体