Desenvolvedor 🔒 Roda no seu navegador — nenhum dado é enviado

Verificar a expiração de um JWT

A claim exp é um carimbo de tempo Unix, que não diz nada à primeira vista. Cole o token e esta página transforma isso em uma data, no seu fuso horário e em uma frase clara.

Token JWT
Segredo ou chave pública
A chave é usada no seu navegador e nunca é enviada a lugar nenhum.
Decodificado
Cabeçalho

          
        
Payload

        
Assinatura

Assine um token seu para testar um endpoint. Tudo é calculado nesta página.

Chave de assinatura

A chave e o token pronto ficam no seu navegador: nada é enviado a lugar nenhum e nada disso vai em um link compartilhado.

Verificar quando um JSON Web Token expira

Uma requisição recusada raramente continua misteriosa por muito tempo: a primeira coisa a conferir é se o token ainda estava vivo quando chegou. O problema é que a resposta fica guardada como algo parecido com 1790208000, e ninguém lê isso de relance. Cole o token e a linha acima do cabeçalho decodificado diz em palavras — expirou há dois dias, expira em cinquenta e oito minutos, ainda não é válido — enquanto a tabela de claims traz a data completa no seu fuso.

Tudo é decodificado na página. Isso importa aqui porque um token é uma credencial viva: quem tiver um válido costuma poder agir como o sujeito dele até exatamente o momento de que esta página está falando. Nada do que você cola é enviado, registrado ou guardado.

As três claims que carregam tempo

ClaimSignificadoComo um valor errado aparece
expO token deixa de ser aceito neste momentoUm 401 que aparece sempre no mesmo intervalo depois de cada login
nbfNão pode ser usado antes deste momentoUm token recém-emitido recusado nos primeiros segundos
iatQuando foi emitidoUsado por regras de idade máxima: um token antigo mas não expirado falha assim mesmo

As três contam segundos desde a época Unix, não milissegundos — um JWT escrito à mão com um Date.now() do JavaScript vai parar no ano 58.000 e não é aceito por ninguém. Se você precisar converter um desses números sozinho, o conversor de timestamp faz a mesma conta nos dois sentidos.

Expirado ou só fora de sincronia?

Duas máquinas quase nunca concordam no segundo, então todo verificador sensato dá alguma folga — de trinta a sessenta segundos é o comum. É essa tolerância que faz um token parecer expirado aqui por alguns segundos e ainda assim ser aceito, e faz um token emitido por um servidor com relógio adiantado ser recusado como ainda não válido nos primeiros instantes. Se um token falha bem longe dessa janela, o relógio não é o problema.

A outra metade da resposta é a assinatura. Um token expirado pode ter uma assinatura perfeitamente boa, e um falsificado pode trazer um exp lá adiante; são duas perguntas independentes. Esta página responde às duas: verifique a assinatura com a chave abaixo do token, e um resultado expirado continua sendo dito ao lado do resultado válido.

Quanto tempo um token deve viver

Pouco, porque um token não pode ser recolhido. Uma vez assinado, quem estiver com ele é aquele usuário até exp passar, então um token de acesso que vive quinze minutos limita o estrago de um vazamento de um jeito que um de trinta dias não limita. O arranjo comum junta um token de acesso curto com um token de renovação longo, guardado no servidor e passível de revogação — exatamente a troca de que trata a comparação com cookies de sessão.

Se o seu caso é testar esse comportamento em vez de diagnosticá-lo, o gerador de JWT assina um token que expira em cinco minutos, ou um sem expiração nenhuma, para você ver como o seu próprio código reage.

Guias relacionados