【问题标题】:Signed JWT rejected: Another algorithm expected, or no matching key(s) found签名的 JWT 被拒绝:需要另一个算法,或者找不到匹配的密钥
【发布时间】: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]

【问题讨论】:

    标签: spring-boot jwt spring-security-oauth2 nimbus-jose-jwt


    【解决方案1】:

    如果您的令牌中的 kid 与 JWKS 端点中的 kid 不匹配,则会出现此异常。

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

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

    【讨论】:

    • 是的,我仔细检查了孩子的令牌和 JWKS 端点是不同的,我需要与我们的管理员核实一下为什么会这样......谢谢您的确认
    • 你能对此发表评论吗 - stackoverflow.com/questions/70049215/…
    猜你喜欢
    • 2022-01-15
    • 2019-10-31
    • 2020-07-08
    • 1970-01-01
    • 2014-10-14
    • 2017-07-12
    • 1970-01-01
    • 2018-11-05
    • 2015-06-13
    相关资源
    最近更新 更多