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

Signed JWT rejected: Another algorithm expected, or no matching key(s) found

使用 Spring 引导 OAuth 资源服务器启动项目,版本 - 2.4.4。 我收到以下异常,我在代码中找不到太多问题,因为它在我们的预生产环境中运行良好 但不能在产品环境中工作
到目前为止的观察,
我已经检查过,并想确认 如果从 jwk uri 收到的孩子和从令牌收到的孩子不同,那么是否可能出现此异常?注意,令牌和 jwk uri 的孩子相同在 pre-prod 环境中。
来自 jwk uri -

来自 jwt header -

查看了此 code,用于密钥 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 与 JWKS 端点中的 kid 不匹配,则预计会出现此异常。

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

JWT 应该 在正文中包含一个 iss 字段,可以帮助您找到问题。