Pular para o conteúdo
ecdsa.com

JWT (JSON Web Token)

Um token compacto e seguro para URLs (RFC 7519) que transporta um objeto JSON de claims, assinado como JWS ou criptografado como JWE, usado em tokens de ID, tokens de acesso e muitas sessões de API.
Também escrito comoJSON Web TokenJWT tokenRFC 7519

Um JWT assinado é header.payload.signature, cada parte em base64url sem padding: o cabeçalho indica o algoritmo (alg), a chave (kid) e o tipo (typ), e o payload contém claims como iss, sub, aud, exp, nbf, iat e jti (RFC 7519 §4.1), além das claims da aplicação. JWTs criptografados têm cinco partes. Qualquer pessoa que tenha o token consegue ler o payload de um JWT assinado: a assinatura protege a integridade, não a confidencialidade.

A verificação tem duas metades: a assinatura, com um algoritmo e uma chave que o verificador escolheu de antemão, e depois as claims — emissor, público-alvo, expiração com uma pequena tolerância para diferença de relógio e o tipo do token, para que um token de ID não seja aceito onde se espera um token de acesso. A RFC 8725 (JWT Best Current Practices) lista essas regras; a maioria das vulnerabilidades de JWT vem de pular uma delas.

A escolha do algoritmo envolve prós e contras, discutidos em ES256 vs RS256 e HS256 vs RS256. O depurador de JWT decodifica e verifica tokens localmente.

Padrões e referências

Todos os termos