签名的 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 被拒绝:需要另一个算法,或者找不到匹配的密钥的主要内容,如果未能解决你的问题,请参考以下文章

Jwt介绍

Jwt介绍

JWT 来自一个网站的无效签名,但另一个网站没有错误。用户对象的额外属性被添加到令牌

APIGateway

javascript 生成MD5加密

JWT:我应该使用哪种签名算法?