> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Describe cómo analizar y validar un JSON Web Token (JWT).

# Validar JSON Web Tokens

<Card title="Descripción general">
  Conceptos clave

  * Consulte información sobre los JSON Web Tokens (JWT) que Auth0 usa para los tokens de acceso, ID, de actualización y de cierre de sesión.
  * Revise los algoritmos de firma para entender qué es la firma de un token.
  * Valide los JWT para asegurarse de que nadie los haya manipulado.
  * Use los SDK de Auth0, middleware o alguna de las bibliotecas de terceros de [JWT.io](https://jwt.io/?_gl=1*arqbp6*rollup_ga*MTI5MzkwNDYxOC4xNjQ0MjUyMTYx*rollup_ga_F1G3E656YZ*MTY1MDA0NDA3Ni4xMjkuMS4xNjUwMDQ0MDg1LjUx&_ga=2.167965921.1971874740.1649687281-1293904618.1644252161#libraries-io) para validar JWT.
</Card>

Auth0 usa <Tooltip tip="JSON Web Token (JWT): formato estándar de ID Token (y, a menudo, también de Token de acceso) que se utiliza para representar claims de forma segura entre dos partes." cta="Ver glosario" href="/es/docs/glossary?term=JSON+Web+Token+%28JWT%29">JSON Web Token (JWT)</Tooltip> para la transmisión segura de datos, la autenticación y la autorización. Los tokens deben analizarse y validarse en aplicaciones web tradicionales, nativas y de una sola página para asegurarse de que el token no se haya visto comprometido y de que la firma sea auténtica. Los tokens deben verificarse para reducir los riesgos de seguridad si, por ejemplo, el token ha sido manipulado, se ha usado indebidamente o ha expirado. La validación de <Tooltip tip="JSON Web Token (JWT): formato estándar de ID Token (y, a menudo, también de Token de acceso) que se utiliza para representar claims de forma segura entre dos partes." cta="Ver glosario" href="/es/docs/glossary?term=JWT">JWT</Tooltip> comprueba la estructura, los claims y la firma para minimizar el riesgo.

﻿

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Para inspeccionar visualmente un JWT, visite [JWT.io](https://jwt.io/) o use la [extensión JWT Debugger para Chrome](https://chrome.google.com/webstore/detail/jwt-debugger/ppmmlchacdbknfphdeafcbmklcghghmd?hl=en)).
</Callout>

La firma del token JWT se genera mediante un <Tooltip tip="Algoritmo de firma: algoritmo que se utiliza para firmar digitalmente tokens y garantizar que el token no ha sido manipulado." cta="Ver glosario" href="/es/docs/glossary?term=Signing+Algorithm">algoritmo de firma</Tooltip>. Aunque los tokens pueden usar varios <Tooltip tip="Algoritmo de firma: algoritmo que se utiliza para firmar digitalmente tokens y garantizar que el token no ha sido manipulado." cta="Ver glosario" href="/es/docs/glossary?term=signing+algorithms">algoritmos de firma</Tooltip>, Auth0 admite RS256, firma RSA con la función hash SHA-256, o HS256, código de autenticación de mensajes HMAC (MAC) con SHA-256. Para obtener más información sobre el algoritmo recomendado por Auth0, lea [Algoritmos de firma](/es/docs/get-started/applications/signing-algorithms).

Al validar un JWT, por lo general, se analizan, o se decodifican, el valor hash actual y el valor hash original, y luego se comparan para verificar que la firma del token sea auténtica. Todas nuestras [guías de inicio rápido de API de backend](/es/docs/quickstart/backend) usan SDKs que realizan por usted la validación y el análisis de JWT.

<div id="parse-and-validate">
  ## Analizar y validar
</div>

Si no utiliza uno de nuestros SDK que realizan por usted la validación y el análisis de JWT, puede analizar y validar un JWT de estas formas:

* Usando cualquier middleware existente para su framework web.
* Eligiendo una biblioteca de terceros de JWT.io.
* Implementando manualmente las comprobaciones descritas en la [especificación RFC 7519 > 7.2 Validating a JWT](https://tools.ietf.org/html/rfc7519#section-7.2).

Le recomendamos encarecidamente que utilice middleware o una de las bibliotecas de terceros de código abierto existentes para analizar y validar JWT. En [JWT.io](https://jwt.io/#libraries-io), puede encontrar bibliotecas para varias plataformas y lenguajes, como .NET, Python, Java, Ruby, Objective-C, Swift y PHP.

<div id="middleware">
  ## Middleware
</div>

Muchos frameworks web, como [ASP.NET Core](/es/docs/quickstart/backend/aspnet-core-webapi), incluyen middleware para gestionar la validación de JWT. Por lo general, esta es la mejor opción, ya que el middleware se integra bien con los mecanismos de autenticación generales del framework.

<div id="third-party-libraries">
  ## Bibliotecas de terceros
</div>

Si elige una biblioteca de terceros, asegúrese de que admita el algoritmo de firma que seleccionó al registrar su aplicación o API con Auth0. Además, tenga en cuenta que no todas las bibliotecas validan todos los claims de un JWT. En JWT.io, puede ver qué validaciones admite cada biblioteca (busque las marcas de verificación en verde).

La mayoría de las bibliotecas de terceros implementan un método para verificar un JWT e incluyen varios argumentos para que pueda personalizar la verificación. Por ejemplo, si usa Node.js y la [biblioteca node-jsonwebtoken](https://github.com/auth0/node-jsonwebtoken), debe llamar al método [jwt.verify()](https://github.com/auth0/node-jsonwebtoken#jwtverifytoken-secretorpublickey-options-callback). Este método admite un argumento `algorithms` para personalizar los algoritmos permitidos (asegúrese de no permitir `none`), un argumento `secretOrPublicKey` que se completa con el secreto o la clave pública RSA (según el algoritmo de firma seleccionado), y otros argumentos de entrada que le permiten personalizar la validación de claims. Si el análisis falla, la biblioteca devuelve un [error JsonWebTokenError](https://github.com/auth0/node-jsonwebtoken#jsonwebtokenerror) con el mensaje `jwt malformed`, tras lo cual **debe** rechazar la solicitud asociada.

Recomendaciones generales para usar bibliotecas de terceros:

* Para obtener claims de un JWT, use el método `verify()` para validar los claims y la firma. Evite usar el método `decode()` para validar un token, especialmente si proviene de un <Tooltip tip="Cliente público: cliente (aplicación) que no puede conservar credenciales de forma segura. Algunos ejemplos son una aplicación nativa de escritorio o móvil y una aplicación web del lado del cliente basada en JavaScript (como una aplicación de una sola página (SPA))." cta="Ver glosario" href="/es/docs/glossary?term=public+client">cliente público</Tooltip>.
* Siga cuidadosamente todas las instrucciones sobre cómo usar la biblioteca elegida. La biblioteca podría depender de valores o configuraciones predeterminados que podrían generar riesgos de seguridad.

<div id="manually-implement-checks">
  ## Realice comprobaciones manualmente
</div>

Desaconsejamos realizar la validación manual de JWT, ya que es fácil implementarla de forma incorrecta y pasar por alto detalles importantes que pueden derivar en vulnerabilidades de seguridad graves. La mayoría de las bibliotecas JWT se encargan de validar el JWT automáticamente. Visite JWT.io para encontrar una biblioteca JWT para su plataforma y lenguaje de programación.

Para obtener instrucciones sobre cómo validar manualmente un JWT, consulte [RFC 7519](https://tools.ietf.org/html/rfc7519#section-7.2). Todos los JWT emitidos por Auth0 tienen una JSON Web Signature (JWS), lo que significa que están firmados, no cifrados.

<div id="verify-rs256-signed-tokens">
  ## Verifique los tokens firmados con RS256
</div>

Para verificar visualmente los tokens firmados con RS256:

1. Vaya a [Dashboard > Applications](https://manage.auth0.com/#/applications).
2. Vaya a la vista **Settings** y abra **Advanced Settings**.
3. Vaya a la vista **Certificates**, busque el campo **Signed Certificate** y copie la **Public Key**.
4. Vaya al sitio web [JWT.io](https://jwt.io/), busque la lista desplegable **Algorithm** y seleccione **RS256**.
5. Busque la sección **Verify Signature** y pegue la clave pública que copió anteriormente en lugar del contenido del campo que comienza con `-----BEGIN PUBLIC KEY-----`.

Para verificar la firma de un token de alguna de sus aplicaciones:

Le recomendamos obtener la clave pública del JWKS de su inquilino aquí:
`https://{yourDomain}/.well-known/jwks.json`

<div id="learn-more">
  ## Más información
</div>

* [Claims de JSON Web Token](/es/docs/secure/tokens/json-web-tokens/json-web-token-claims)
* [Validar ID Tokens](/es/docs/secure/tokens/id-tokens/validate-id-tokens)
* [Validar tokens de acceso](/es/docs/secure/tokens/access-tokens/validate-access-tokens)
* [Prácticas recomendadas para tokens](/es/docs/secure/tokens/token-best-practices)
