签名 JWT 被拒绝:需要另一种算法,或者找不到匹配的密钥

ana*_*rep 2 jwt spring-boot spring-security-oauth2 nimbus-jose-jwt

使用 Spring Boot OAuth 资源服务器入门项目,版本 - 2.4.4。我收到以下异常,我在代码中找不到太多问题,因为它在我们的 preprod env 中运行良好,但在 prod 环境中不起作用
观察到目前为止,
我已经检查过,并想确认child 是否从 jwk uri 收到并且Kid收到的token不一样,那么有可能出现这个异常吗?注意,kid 与 pre-prod 环境中的 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]
Run Code Online (Sandbox Code Playgroud)

小智 7

kid如果来自您的令牌的 和kid来自 JWKS 端点的 不匹配,则预计会出现此异常。

仔细检查您的配置,您可能有一个客户端尝试使用来自不同发行者的令牌(可能来自您的预产品)。

JWT正文中包含一个iss字段,可帮助您追踪问题。