IMPORTANTE: Esta biblioteca não valida o token, qualquer JWT bem formado pode ser decodificado. Você deve validar o token na lógica do lado do servidor usando algo como express-jwt, koa-jwt, Microsoft.AspNetCore.Authentication.JwtBearer, etc.
Documentação - Primeiros passos - Feedback
Instale com NPM ou Yarn.
Execute npm install jwt-decode
ou yarn add jwt-decode
para instalar a biblioteca.
import { jwtDecode } from "jwt-decode" ;
const token = "eyJ0eXAiO.../// jwt token" ;
const decoded = jwtDecode ( token ) ;
console . log ( decoded ) ;
/* prints:
* {
* foo: "bar",
* exp: 1393286893,
* iat: 1393268893
* }
*/
// decode header by passing in options (useful for when you need `kid` to verify a JWT):
const decodedHeader = jwtDecode ( token , { header : true } ) ;
console . log ( decodedHeader ) ;
/* prints:
* {
* typ: "JWT",
* alg: "HS256"
* }
*/
Nota: Um token falso ou malformado gerará um erro InvalidTokenError
; veja abaixo para obter mais informações sobre erros específicos.
Esta biblioteca depende de atob()
, que é uma função global disponível em todos os navegadores modernos, bem como em todos os ambientes de nó suportados.
Para usar jwt-decode
em um ambiente que não tem acesso a atob()
(por exemplo, React Native), certifique-se de fornecer o polyfill correspondente em seu aplicativo usando core-js/stable/atob
:
import "core-js/stable/atob" ;
Como alternativa, você também pode usar base-64
e polyfill global.atob
:
import { decode } from "base-64" ;
global . atob = decode ;
Esta biblioteca funciona com tokens da web JSON válidos. O formato básico desses tokens é
[part1].[part2].[part3]
Todas as partes devem ser json codificadas em base64 (url) válidas. Dependendo da opção { header: <option> }
ele decodificará a parte 1 (somente se header: true for especificado) ou a parte 2 (padrão)
O não cumprimento do formato resultará em um InvalidTokenError
com uma das seguintes mensagens:
Invalid token specified: must be a string
=> o token passado não era uma string, esta biblioteca só funciona em strings.Invalid token specified: missing part #
=> isso provavelmente significa que está faltando um ponto ( .
) no tokenInvalid token specified: invalid base64 for part #
=> a parte não pôde ser decodificada em base64 (a mensagem deve conter o erro que o decodificador base64 deu)Invalid token specified: invalid json for part #
=> a parte foi decodificada corretamente em base64, no entanto, o valor decodificado não era JSON válido (a mensagem deve conter o erro fornecido pelo analisador JSON) O tipo de retorno da função jwtDecode
é determinado pela propriedade header
do objeto passado como segundo argumento. Se omitido (ou definido como falso), usará JwtPayload
, quando verdadeiro usará JwtHeader
. Se necessário, você pode especificar qual deve ser o tipo de retorno esperado passando um argumento de tipo para a função jwtDecode
.
Você pode estender JwtHeader
e JwtPayload
para incluir declarações ou propriedades não padrão.
import { jwtDecode } from "jwt-decode" ;
const token = "eyJhsw5c" ;
const decoded = jwtDecode < JwtPayload > ( token ) ; // Returns with the JwtPayload type
const { jwtDecode } = require ( 'jwt-decode' ) ;
...
Copie o arquivo jwt-decode.js
da raiz da pasta build/esm
para o seu projeto em algum lugar e importe jwtDecode
dele dentro de uma tag de script marcada com type="module"
:
< script type =" module " >
import { jwtDecode } from "/path/to/jwt-decode.js" ;
const token = "eyJhsw5c" ;
const decoded = jwtDecode ( token ) ;
</ script >
Agradecemos o feedback e a contribuição para este repositório! Antes de começar, veja o seguinte:
Para fornecer feedback ou relatar um bug, levante um problema em nosso rastreador de problemas.
Não relate vulnerabilidades de segurança no rastreador público de problemas do GitHub. O Programa de Divulgação Responsável detalha o procedimento para divulgação de questões de segurança.
Auth0 é uma plataforma de autenticação e autorização adaptável e fácil de implementar. Para saber mais, confira Por que Auth0?
Este projeto está licenciado sob a licença do MIT. Consulte o arquivo LICENSE para obter mais informações.