spring-boot - 签名的 JWT 被拒绝:需要另一个算法,或者找不到匹配的密钥
问题描述
使用 Spring Boot OAuth 资源服务器启动项目,版本 - 2.4.4。我收到以下异常,我在代码中找不到太多问题,因为它在我们的 preprod env 中运行良好,但在 prod 环境中没有工作
到目前为止观察,
我已经检查过,并想确认孩子是否从 jwk uri 和从 token 收到的孩子是不同的,那么这个异常可能吗?注意,在 pre-prod 环境中,kid 对于 token 和 jwk uri 是相同的。
来自 jwk uri -来自 jwt 标头-查看
此代码,用于检查密钥 id 代码段,第 253 行 .. 但我无法进一步了解它。
com.nimbusds.jose.proc.BadJOSEException: Signed JWT rejected: Another algorithm expected, or no matching key(s) found
at com.nimbusds.jwt.proc.DefaultJWTProcessor.process(DefaultJWTProcessor.java:384) ~[nimbus-jose-jwt-8.20.2.jar:8.20.2]
at com.nimbusds.jwt.proc.DefaultJWTProcessor.process(DefaultJWTProcessor.java:330) ~[nimbus-jose-jwt-8.20.2.jar:8.20.2]
at org.springframework.security.oauth2.jwt.NimbusJwtDecoder.createJwt(NimbusJwtDecoder.java:153) ~[spring-security-oauth2-jose-5.4.5.jar:5.4.5]
解决方案
如果kid
来自您的令牌和kid
来自 JWKS 端点的 不匹配,则会出现此异常。
仔细检查您的配置,您可能有一个客户端尝试使用来自不同发行者的令牌(可能来自您的 pre-prod)。
JWT应该在正文中包含一个iss
可以帮助您追踪问题的字段。
推荐阅读
- firebase - 忽略标头 X-Firebase-Locale,因为它的值为 null
- php - 这个“preg_replace”在 php 7.4 中对我不起作用
- python - Python中for循环中的JSON属性覆盖
- python - 使用 dpkt 从 pcap 文件中提取电子邮件地址
- python - 从命令行使用 OpenSCAD 时如何指定网格参数?
- c++ - 运行时检查失败 #2,数组和混乱
- javascript - 添加和编辑的一个模式引导程序 - Upsert
- python - VS Code Python 扩展在选择一个解释器时提示我选择一个解释器
- javascript - 如何在 html 中正确调用/渲染反应代码?
- communication - fluentbit 无法与 fluentd 通信