https://d226lax1qjow5r.cloudfront.net/blog/blogposts/how-to-debug-json-web-tokens-jwts/Blog_Debug-JWT_1200x600.png

Cómo depurar tokens web JSON (JWTs)

Publicado el May 11, 2021

Tiempo de lectura: 3 minutos

Muchas aplicaciones web modernas, tanto del lado del cliente como del lado del servidor, utilizan tokens web JSON (JWT) para la autenticación, lo cual es un enfoque excelente. Sin embargo, cuando las cosas no funcionan, puede ser complicado averiguar por qué.

Este post pretende darte algunas tácticas para entender y corregir problemas con JWTs. Si acabas de empezar, consulta la documentación documentación sobre cómo trabajar con JWTs y nuestras APIs primero.

¿Parece plausible su token web JSON?

A veces el problema es tan sencillo como saber si has pasado el valor correcto al lugar adecuado, el equivalente a la pregunta "¿está enchufado?".

Por lo tanto, añada un poco de depuración a su código para mostrar el JWT en algún lugar que pueda ver, como el registro de errores o la consola.

A continuación, eche un vistazo a lo siguiente:

  • ¿Parece un token? Deberían ser tres conjuntos de cadenas alfanuméricas de aspecto confuso (técnicamente, caracteres en mayúsculas y minúsculas, dígitos numéricos, + y / con = como relleno), separadas por puntos.

  • ¿Hay espacios en blanco alrededor, incluida una nueva línea al final? Los espacios en blanco pueden ser un problema para algunas herramientas.

  • ¿Está ahí? He escrito mal el nombre de una variable y he regenerado el token varias veces antes de darme cuenta de que el problema soy yo, no el token.

Si la ficha pasa la inspección visual, entonces tenemos que sacar algunas herramientas más específicas.

Consulta el token web JSON en jwt.io

Existe una excelente herramienta de depuración JWT (¡gracias, Auth0!) que puede ayudarnos a entender cuando las cosas no son lo que pretendíamos.

Screenshot of the JWT.io debugger tool, with default values

Pegue su JWT en el panel de la izquierda y, si lo analiza, los detalles de las tres secciones aparecerán en el lado derecho.

La primera sección es el encabezado, que muestra el tipo y el algoritmo utilizados. Para la firma de llamadas a la API de Vonage, generalmente será typ de JWT y alg de RS256 (los JWT de los webhooks firmados de Messages API son HS256).

La sección central contiene la mayor parte de los datos reales. Aquí hay algunos campos esperados para las llamadas a la API de Vonage con JWT:

  • iat significa "emitido en" y debe ser una marca de tiempo UNIX

  • exp es la "hora de caducidad" y también es una marca de tiempo UNIX

  • jti significa "JWT ID", y debe ser un identificador único (formato no especificado)

  • application_id es necesaria para las llamadas a la API de Vonage y debe coincidir con la clave privada utilizada para firmar el token.

También puede ver un campo sub (los SDK de cliente lo utilizan) o algo llamado nbf que es la marca de tiempo en la que este token es "Not Before", lo que significa que el token no es válido hasta ese momento.

La tercera y última sección en el depurador jwt.io es la firma. Los JWT se crean con una clave privada que no formará parte de la carga útil.

La clave privada es esencialmente un secreto compartido entre tú y Vonage. Puedes verificar que la firma sea correcta agregando tu clave privada a la interfaz web en esta sección.

Regenere su JWT

A veces, el problema que creemos que es la ficha es algo completamente distinto. Aquí tienes algunas tácticas que puedes probar cuando los dos primeros pasos no hayan servido de nada.

Pruebe una nueva aplicación

Crear una nueva aplicación, generar nuevas claves, asegurarse de que el nombre del archivo es correcto private key-todos estos son pasos que realmente no deberían suponer una diferencia, pero a veces son todo lo que se necesita. Este es mi "truco raro" para los problemas de JWT, y quizás te ayude a ti también.

Generar un token web JSON diferente

Pruebe a generar un token y a utilizarlo en su aplicación o en una llamada a la API desde su cliente HTTP favorito.

Puede generar un JWT desde la herramienta Nexmo CLIusando el ID de tu aplicación y tu Clave Privada, así:

nexmo jwt:generate path/to/private.key application_id=asdasdas-asdd-2344-2344-asdasdasd345

Como alternativa, disponemos de un asistente web en nuestro portal para desarrolladores que puede utilizar para generar un JWT: https://developer.nexmo.com/jwt.

Depurar es una habilidad

La búsqueda de fallos es una habilidad en sí misma, y esperamos que este artículo te haya ayudado a avanzar en la construcción de algo increíble. Si tienes más consejos para compartir, ¡háznoslo saber! Somos @VonageDev en Twitter.

Compartir:

https://a.storyblok.com/f/270183/250x250/e3d3b71060/lornajane.png
Lorna MitchellAntiguos alumnos de Vonage

Lorna es ingeniera de software con un incurable hábito bloguero. Intenta domar las palabras y el código a partes iguales.