Cole um token ou informe payload e segredo de teste para gerar um. Uma assinatura válida não substitui verificações de emissor, audiência e autorização.
Funciona localmente no seu navegadorInspect a token to view its header.
Inspect a token to view its payload.
O segredo é usado apenas pela API criptográfica do navegador. O verificador aceita HS256, HS384 e HS512 e não envia o token nem o segredo ao VoriTools.
Gere apenas tokens HS256, HS384 ou HS512. O payload e o segredo ficam no Web Crypto; esta ferramenta nunca oferece alg: none.
Generate a local HMAC JWT to view it here.
Claims decodificados são dados Base64URL legíveis, não prova de confiança. Verifique algoritmo, validade, issuer e audience e valide a assinatura com uma chave ou segredo confiável antes de aceitar o token.
Esta página divide um JWT compacto em cabeçalho, payload e assinatura, mostra os claims decodificados e verifica a assinatura quando o token é assinado com HMAC e você informa o segredo. Também gera tokens HS256, HS384 ou HS512 de vida curta a partir de um payload que você digita.
Decodificar e verificar são etapas separadas de propósito. Qualquer pessoa lê o payload de um JWT sem chave, e uma assinatura válida só prova que o token foi assinado com aquela chave; não diz se ele expirou, se foi emitido para o seu serviço ou o que ele permite fazer.
O cabeçalho é JSON codificado em Base64URL que normalmente declara alg e typ e, às vezes, um kid que indica ao verificador qual chave usar. O payload é o conjunto de claims: os registrados (iss, sub, aud, exp, nbf, iat, jti) mais os privados que o emissor adiciona. A assinatura é o algoritmo aplicado à string ASCII base64url(header) + "." + base64url(payload) com a chave.
Base64URL é o alfabeto Base64 padrão com + e / trocados por - e _ e sem preenchimento. Por isso um token viaja em URL, cookie ou cabeçalho Authorization sem escapes e, também por isso, remontar o token à mão costuma quebrar a assinatura.
Apenas a família HMAC: HS256, HS384 e HS512, porque um segredo compartilhado basta para recalculá-las. RS256, PS256, ES256 e EdDSA assinam com chave privada e verificam com chave pública, então aqui podem ser decodificados, mas não verificados; para isso você precisa da JWK pública do emissor. Com um token RS256 o botão Verificar assinatura fica desativado e o aviso explica o motivo.
Um token que declara alg como none é marcado em vermelho: nunca deve ser aceito, e um verificador jamais deveria confiar no algoritmo anunciado pelo próprio token sem confrontá-lo com uma lista permitida. Trocar HS256 por RS256 e assinar com a chave pública como se fosse um segredo HMAC é um ataque conhecido contra bibliotecas descuidadas.
exp precisa estar no futuro e nbf no passado, em segundos desde a época Unix, com alguma folga entre relógios. iat deve ser plausível, não futuro. iss e aud têm de corresponder ao seu serviço; caso contrário, um token emitido para outra aplicação será aceito.
Conferir a assinatura não é autorizar. Papéis, escopos e identificador de locatário ficam em claims privados, e o conjunto de claims de um JWT é assinado, não cifrado: nunca coloque um segredo em um payload que você não mostraria a quem tem o token.
A decodificação e a verificação HMAC rodam no seu navegador, então o token não é enviado. Ainda assim, o hábito seguro é testar com tokens descartáveis: um refresh token de produção ou uma credencial de longa duração não deveria ser colada em nenhuma página web, inclusive nesta.
Esses algoritmos são assimétricos e esta página só recalcula assinaturas HMAC. O token ainda pode ser decodificado e seus claims lidos, mas verificá-lo exige a chave pública do emissor e uma biblioteca com suporte a JWA, algo que uma página com apenas um segredo compartilhado não faz corretamente.
Ou o segredo está errado, ou o algoritmo escolhido não é o da cabeçalho, ou o texto do token mudou depois de assinado. Editar o payload, reindentá-lo e recodificá-lo à mão dá o mesmo resultado, porque a assinatura cobre os bytes originais exatos.
Porque um JWT é assinado, não cifrado. Base64URL é uma codificação, e quem tem o token decodifica cabeçalho e payload sem chave nenhuma. Se os claims forem sensíveis, use JWE, que cifra o conteúdo para um destinatário.
JWT é o conjunto de claims, os dados. JWS é a serialização assinada que produz o token compacto de três partes que esta página inspeciona. JWE é a serialização cifrada, em que o payload é ilegível sem chave e a estrutura tem cinco partes em vez de três.
Minutos, não horas. Defina Expiração em minutos com um valor pequeno para que um token de teste vazado pare de funcionar, e lembre que esta página assina com o segredo digitado localmente, então o token só vale em sistemas que compartilhem esse segredo.