Pular para o conteúdo
ecdsa.com
ruby-jwt (Ruby)Ruby

Mensagem de erro

Expected a different algorithm (JWT::IncorrectAlgorithm)

Também aparece como

  • JWT::IncorrectAlgorithm: Expected a different algorithm

ruby-jwt (Ruby) — JWT::IncorrectAlgorithm from JWT.decode

O que significa

O cabeçalho `alg` do token não está entre os algoritmos que você permitiu — e, se você não passou nenhuma opção `algorithm:`/`algorithms:`, o ruby-jwt não permite nenhum. Desde o ruby-jwt 2.x, o verificador precisa indicar o algoritmo explicitamente, porque confiar no próprio cabeçalho do token é a origem dos conhecidos ataques de confusão de algoritmo. A assinatura não foi verificada.

Por que acontece

Como corrigir

  1. 1.

    Indicar explicitamente o algoritmo do emissor

    Passe `algorithm:` (ou `algorithms:` para uma lista curta). Com vários algoritmos, use uma função de carregamento de JWKS para que cada token seja verificado com uma chave do tipo correspondente.

    ruby
    payload, header = JWT.decode(token, public_key, true, algorithm: "ES256")
    # several allowed algorithms (e.g. during a migration), each matched to the right key type:
    payload, header = JWT.decode(token, nil, true, algorithms: ["ES256", "RS256"], jwks: jwks_loader)

Erros relacionados

Ver toda a base de erros de assinatura