¿Cómo puedo decodificar la carga útil de JWT usando JavaScript? Sin una biblioteca Entonces, el token solo devuelve un objeto de carga útil que puede consumir mi aplicación front-end.
Token de ejemplo: xxxxxxxxx.XXXXXXXX.xxxxxxxx
Y el resultado es la carga útil:
{exp: 10012016 name: john doe, scope:['admin']}
javascript
jwt
Chrisk8er
fuente
fuente
Respuestas:
Función de analizador JWT de texto unicode de trabajo:
fuente
JSON.parse(window.atob(base64))
para que funcione. Justoreturn JSON.parse(atob(base64));
y luegopostman.setEnvironmentVariable("userId", parseJwt(jsonData.access_token));
"access_token" es en mi caso la clave del valor del token en respuesta (puede diferir en su caso).var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
jwt-decode
módulo porque es pequeño pero tiene un manejo un poco mejor.Función simple con try - catch
¡Gracias!
fuente
atob
ha conocido problemas UnicodePuede usar jwt-decode , para poder escribir:
fuente
puedes usar la
atob()
función de javascript puro para decodificar el token en una cadena:o analizarlo directamente en un objeto json:
leer sobre
atob()
ybtoa()
funciones integradas de javascript Base64 codificación y decodificación - Web API | MDN .fuente
@Peheje funcionará, pero tendrá problemas con Unicode. Para solucionarlo, uso el código en https://stackoverflow.com/a/30106551/5277071 ;
fuente
Como el objeto "ventana" no está presente en el entorno de nodejs, podríamos usar las siguientes líneas de código:
Me está funcionando perfectamente. Espero eso ayude.
fuente
Si usa el nodo, es posible que deba usar el paquete de búfer:
fuente
Utilizo esta función para obtener carga útil, encabezado, exp (tiempo de caducidad), iat (emitido en) en función de esta respuesta
fuente
Todas las características de jwt.io no son compatibles con todos los idiomas. En NodeJs puedes usar
fuente
Encontré este código en jwt.io y funciona bien.
En algunos casos (ciertas plataformas de desarrollo),
la mejor respuesta (por ahora) enfrenta un problema de longitud base64 no válida.
Entonces, necesitaba una forma más estable.
Espero que te ayude.
fuente
Tanto Guy como Peheje ya respondieron la pregunta. Para un principiante total como yo, también fue útil tener la línea de importación definida en el ejemplo.
También me llevó algunos minutos darme cuenta de que el token es el conjunto completo de credenciales que se publican de nuevo (todo el token JWT, no solo la parte idToken). Directo una vez que lo sabes ...
fuente
Solución NodeJS simple para decodificar un token web JSON (JWT)
fuente
Respuesta basada en GitHub - auth0 / jwt-decode . Se modificó la entrada / salida para incluir la división de cadenas y el objeto de retorno {encabezado, carga útil, firma} para que pueda pasar todo el token.
fuente
Aquí hay una solución más rica en funciones que acabo de hacer después de estudiar esta pregunta:
Aquí hay algunas muestras de uso:
No pude hacer que se pueda ejecutar en la herramienta de fragmento de código StackOverflow, pero esto es aproximadamente lo que vería si ejecutara ese código:
Hice que la
parseJwt
función siempre devuelva un objeto (hasta cierto punto por razones de tipeo estático).Esto le permite utilizar sintaxis como:
Luego, puede probar en tiempo de ejecución para tipos específicos de errores y evitar cualquier colisión de nombres.
Si alguien puede pensar en cambios de bajo esfuerzo y alto valor en este código, no dude en editar mi respuesta para beneficio de
next(person)
.fuente
Basado en respuestas aquí y aquí :
fuente
Al ejecutar Javascript node.js express, primero tuve que instalar el paquete de la siguiente manera:
luego en mi código app.js obtengo el paquete:
Luego ejecuta el código:
Entonces la magia:
fuente