Pular para o conteúdo
ecdsa.com
jsonwebtoken (Node.js)Bibliotecas de JWT

Mensagem de erro

jwt issuer invalid. expected: https://login.example.com/

O texto após “expected:” é o que você configurou; com um array de emissores, os valores aparecem separados por vírgulas.

jsonwebtoken (Node.js) — JsonWebTokenError from jwt.verify()

O que significa

A claim `iss` do token não é igual à opção `issuer` que você passou para `jwt.verify()` (ou o token nem tem `iss`). O texto após “expected:” é o valor que você configurou, não o do token. O jsonwebtoken compara strings de forma exata; portanto, a assinatura é válida, mas o token afirma vir de um lugar em que seu serviço não confia.

Por que acontece

Como corrigir

  1. 1.

    Imprimir o iss do token como JSON

    `JSON.stringify` torna visíveis diferenças invisíveis — barras finais, espaços em branco, um caminho diferente. Em seguida, copie o `issuer` do provedor de `/.well-known/openid-configuration` para sua configuração.

    js
    const { iss } = jwt.decode(token) ?? {};
    console.log(JSON.stringify(iss)); // compare byte for byte with your issuer option
  2. 2.

    Aceitar vários emissores só de forma deliberada

    A opção `issuer` aceita um array. Use-o para uma migração planejada entre duas grafias ou entre emissores que você controla — e associe cada emissor às próprias chaves.

    js
    jwt.verify(token, publicKey, {
      algorithms: ["ES256"],
      issuer: ["https://login.example.com/", "https://login.example.com"], // during a migration only
    });

Erros relacionados

Ver toda a base de erros de assinatura