Pular para o conteúdo
ecdsa.com
jose (JavaScript)Bibliotecas de JWT

Mensagem de erro

"alg" (Algorithm) Header Parameter value not allowed

jose (JavaScript) — JOSEAlgNotAllowed, code ERR_JOSE_ALG_NOT_ALLOWED

O que significa

O cabeçalho alg do token indica um algoritmo que não está na lista de algoritmos permitidos que você passou para jwtVerify. A biblioteca jose recusa o token antes de qualquer operação criptográfica. Essa barreira é intencional: o cabeçalho alg é uma entrada controlada pelo atacante, e o verificador — não o token — é quem deve escolher o algoritmo.

Por que acontece

Como corrigir

  1. 1.

    Alinhar a lista de algoritmos permitidos, a chave e a configuração do emissor

    Examine o cabeçalho e faça os três concordarem. Durante migrações, aceite os dois algoritmos temporariamente, cada um com a própria chave, selecionada pelo kid no JWKS.

    js
    import { decodeProtectedHeader, jwtVerify } from "jose";
    
    console.log(decodeProtectedHeader(token)); // { alg: "ES256", kid: "..." }
    await jwtVerify(token, jwks, { algorithms: ["ES256"] });
  2. 2.

    Manter a lista de algoritmos permitidos o menor possível

    Não “corrija” este erro listando todos os algoritmos. Um valor por tipo de token é o estado final seguro; a RFC 8725 (JWT Best Current Practices) diz o mesmo.

    js
    // good: exactly what your issuer signs with
    { algorithms: ["ES256"] }
    // bad: defeats the protection this error provides
    { algorithms: ["ES256", "RS256", "HS256", "PS256"] }

Erros relacionados

Ver toda a base de erros de assinatura