签名的 JWT 被拒绝:需要另一个算法,或者找不到匹配的密钥
Posted
技术标签:
【中文标题】签名的 JWT 被拒绝:需要另一个算法,或者找不到匹配的密钥【英文标题】:Signed JWT rejected: Another algorithm expected, or no matching key(s) found 【发布时间】:2021-11-18 08:59:22 【问题描述】:使用 Spring Boot OAuth 资源服务器启动项目,版本 - 2.4.4。 我收到以下异常,我在代码中找不到太多问题,因为它在我们的 preprod 环境中运行良好 但不能在 prod 环境中工作 到目前为止的观察, 我已经检查过,并想确认 如果从 jwk uri 收到的孩子和从令牌收到的孩子不同,那么这个例外是否可能?注意,在 pre-产品环境。来自 jwk uri - 来自 jwt 标头 - 调查了这个code,用于检查密钥ID sn-p,第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]
【问题讨论】:
【参考方案1】:如果您的令牌中的 kid
与 JWKS 端点中的 kid
不匹配,则会出现此异常。
仔细检查您的配置,您可能有一个客户端试图使用来自不同发行者(可能来自您的 pre-prod)的令牌。
JWT应该在正文中包含一个 iss
字段,它应该可以帮助您追踪问题。
【讨论】:
是的,我仔细检查了孩子的令牌和 JWKS 端点是不同的,我需要与我们的管理员核实一下为什么会这样......谢谢您的确认 你能对此发表评论吗 - ***.com/questions/70049215/…以上是关于签名的 JWT 被拒绝:需要另一个算法,或者找不到匹配的密钥的主要内容,如果未能解决你的问题,请参考以下文章