Произошла ошибка при попытке декодировать JWT: подписано: JWT отклонено: ожидается другой алгоритм или не найдены соответствующие ключи - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь настроить OAuth2-OpenID Connect с ForgeRock OpenAM, интегрированной с Spring Security, и получаю следующую ошибку

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

. URI, известный всем Jwk, возвращает следующие поддерживаемые алгоритмы:

"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 использовать один конкретный алгоритм?

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Да, вы можете указать AM использовать специальный алгоритм подписи для подписи маркера идентификатора OIDC (https://backstage.forgerock.com/docs/am/6.5/oidc1-guide/#configure-oauth2-oidc-client-signing),, но я подозреваю, что клиент не может проверить подпись из-за отсутствующего ключа.

Просто чтобы убедиться ... вы знаете, что OAuth2 и OIDC - это разные темы ..

0 голосов
/ 23 июня 2019

Проблема была в конфигурации в Access Management для шифрования токена.Он был пустым, но по какой-то причине в заголовке JWT показывался HS256, из-за чего пружина искала закрытый ключ HS256 и не работала.После того, как я изменил настройку на использование RS256, все начало работать.

...