1. ホーム
  2. spring-security

[解決済み】Jwt.Dataをデコードしようとするとエラーが発生しました。Signed JWT rejected: 別のアルゴリズムが期待される、または一致するキーが見つからない

2022-02-14 03:34:48

質問

ForgeRock OpenAMとspring securityを統合してOAuth2-OpenID Connectを設定しようとしていますが、次のエラーが発生します。

2019-06-17 15:01:42.576 DEBUG 62255 --- [nio-8090-exec-2] .o.s.r.w.BearerTokenAuthenticationFilter : 
Authentication request for failed: org.springframework.security.oauth2.core.OAuth2AuthenticationException: 
An error occurred while attempting to decode the Jwt: 
Signed JWT rejected: Another algorithm expected, or no matching key(s) found

Jwk .well-known uri は、以下の対応アルゴリズムを返します。

"id_token_signing_alg_values_supported": [
    "PS384",
    "ES384",
    "RS384",
    "HS256",
    "HS512",
    "ES256",
    "RS256",
    "HS384",
    "ES512",
    "PS256",
    "PS512",
    "RS512"
  ]

デコードされたJWTには、以下のようなヘッダが表示されます。

{
  "typ": "JWT",
  "zip": "NONE",
  "alg": "HS256"
}

ヘッダから来る値に基づいて特定の JwtDecoder を設定したり、AM が特定のアルゴリズムを使用するように強制したりする方法はありますか?

どのように解決するのですか?

問題は、トークン暗号化に関するアクセス管理の設定にありました。空白でしたが、なぜかJWTヘッダがHS256を表示していたため、springがHS256秘密鍵を探して失敗していました。RS256を使用するように設定を変更したところ、すべてがうまくいくようになりました。