IMPORTANTE: esta biblioteca no valida el token; se puede decodificar cualquier JWT bien formado. Debe validar el token en la lógica del lado del servidor usando algo como express-jwt, koa-jwt, Microsoft.AspNetCore.Authentication.JwtBearer, etc.
Documentación - Primeros pasos - Comentarios
Instalar con NPM o Yarn.
Ejecute npm install jwt-decode
o yarn add jwt-decode
para instalar la 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: Un token falso o con formato incorrecto generará un error InvalidTokenError
; consulte a continuación para obtener más información sobre errores específicos.
Esta biblioteca se basa en atob()
, que es una función global disponible en todos los navegadores modernos, así como en todos los entornos de nodos compatibles.
Para usar jwt-decode
en un entorno que no tiene acceso a atob()
(por ejemplo, React Native), asegúrese de proporcionar el polyfill correspondiente en su aplicación usando core-js/stable/atob
:
import "core-js/stable/atob" ;
Alternativamente, también puedes usar base-64
y polyfill global.atob
tú mismo:
import { decode } from "base-64" ;
global . atob = decode ;
Esta biblioteca funciona con tokens web JSON válidos. El formato básico de estos tokens es
[part1].[part2].[part3]
Se supone que todas las partes son json válidos codificados en base64 (url). Dependiendo de la opción { header: <option> }
, decodificará la parte 1 (solo si se especifica encabezado: verdadero) o la parte 2 (predeterminada)
No cumplir con el formato generará un InvalidTokenError
con uno de los siguientes mensajes:
Invalid token specified: must be a string
=> el token pasado no era una cadena, esta biblioteca solo funciona con cadenas.Invalid token specified: missing part #
=> esto probablemente significa que le falta un punto ( .
) en el tokenInvalid token specified: invalid base64 for part #
=> la pieza no se pudo decodificar en base64 (el mensaje debe contener el error que dio el decodificador de base64)Invalid token specified: invalid json for part #
=> la parte se decodificó correctamente en base64, sin embargo, el valor decodificado no era JSON válido (el mensaje debe contener el error que dio el analizador JSON) El tipo de retorno de la función jwtDecode
está determinado por la propiedad header
del objeto pasado como segundo argumento. Si se omite (o se establece en falso), usará JwtPayload
, cuando sea verdadero usará JwtHeader
. Si es necesario, puede especificar cuál debería ser el tipo de retorno esperado pasando un argumento de tipo a la función jwtDecode
.
Puede ampliar JwtHeader
y JwtPayload
para incluir propiedades o reclamos no estándar.
import { jwtDecode } from "jwt-decode" ;
const token = "eyJhsw5c" ;
const decoded = jwtDecode < JwtPayload > ( token ) ; // Returns with the JwtPayload type
const { jwtDecode } = require ( 'jwt-decode' ) ;
...
Copie el archivo jwt-decode.js
desde la raíz de la carpeta build/esm
a su proyecto en algún lugar, luego importe jwtDecode
desde allí dentro de una etiqueta de script marcada con type="module"
:
< script type =" module " >
import { jwtDecode } from "/path/to/jwt-decode.js" ;
const token = "eyJhsw5c" ;
const decoded = jwtDecode ( token ) ;
</ script >
¡Apreciamos los comentarios y las contribuciones a este repositorio! Antes de comenzar, consulte lo siguiente:
Para proporcionar comentarios o informar un error, plantee un problema en nuestro rastreador de problemas.
No informe vulnerabilidades de seguridad en el rastreador de problemas público de GitHub. El Programa de Divulgación Responsable detalla el procedimiento para revelar problemas de seguridad.
Auth0 es una plataforma de autenticación y autorización adaptable y fácil de implementar. Para obtener más información, consulte ¿Por qué Auth0?
Este proyecto está bajo la licencia MIT. Consulte el archivo de LICENCIA para obtener más información.