Como Funcionam Issuer e Audience em Tokens JWT


No JWT (JSON Web Token), as propriedades Issuer e Audience fazem parte do payload e são fundamentais para garantir que o token é autêntico e está sendo usado no lugar certo. 🧾🔐


📌 Conceitos principais

Issuer (iss)

  • Significa “emissor do token”.

  • Indica quem gerou e assinou o JWT.

  • Normalmente é o nome da sua API ou do serviço de autenticação.

Exemplo:
"Issuer": "AuthApi"

➡️ Isso significa que apenas tokens emitidos pela API de autenticação AuthApi serão considerados válidos.


Audience (aud)

  • Significa “público-alvo do token”.

  • Indica para qual aplicação ou serviço o token foi gerado.

Exemplo:
"Audience": "ConsumerApi"

➡️ Nesse caso, o token foi emitido especificamente para ser usado na API ConsumerApi. Se for utilizado em outra API, deve ser rejeitado.


🧠 Como funciona na validação (.NET)

Quando o middleware de autenticação do .NET recebe um token JWT, ele:

  1. Decodifica o token.

  2. Valida a assinatura usando o secret ou a chave pública.

  3. Compara os campos do token com a configuração da aplicação:

    • O campo iss do token deve ser igual ao Issuer configurado.

    • O campo aud do token deve ser igual ao Audience configurado.

Se qualquer uma dessas validações falhar, o token é rejeitado.


⚙️ Alguns parâmetros importantes na configuração

  • RequireHttpsMetadata = false
    Útil em ambiente de desenvolvimento/local (HTTP).
    Em produção, o ideal é deixar true, garantindo que o token só trafegue por HTTPS.

  • SaveToken = false
    Quando false, o token não é armazenado automaticamente no HttpContext.
    Se você precisar acessar o token durante o processamento da requisição, pode configurar como true.

  • ClockSkew = TimeSpan.FromMinutes(2)
    Define uma tolerância (neste caso, 2 minutos) para diferenças de horário entre cliente e servidor.
    Se quiser que a expiração seja exata, utilize TimeSpan.Zero, mas isso exige que os relógios estejam bem sincronizados.


✅ Resumo

  • Issuer → Quem emitiu o token.

  • Audience → Para quem o token foi emitido (onde ele pode ser usado).

Configurar corretamente esses valores é essencial para garantir segurança e controle sobre onde e como seus tokens JWT podem ser utilizados. 

Comentários