Saltar al contenido principal

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 para validar JWT.
Auth0 usa 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 comprueba la estructura, los claims y la firma para minimizar el riesgo. 
Para inspeccionar visualmente un JWT, visite JWT.io o use la extensión JWT Debugger para Chrome).
La firma del token JWT se genera mediante un . Aunque los tokens pueden usar varios , 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. 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 usan SDKs que realizan por usted la validación y el análisis de JWT.

Analizar y validar

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: 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, puede encontrar bibliotecas para varias plataformas y lenguajes, como .NET, Python, Java, Ruby, Objective-C, Swift y PHP.

Middleware

Muchos frameworks web, como ASP.NET Core, 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.

Bibliotecas de terceros

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, debe llamar al método jwt.verify(). 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 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 .
  • 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.

Realice comprobaciones manualmente

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. Todos los JWT emitidos por Auth0 tienen una JSON Web Signature (JWS), lo que significa que están firmados, no cifrados.

Verifique los tokens firmados con RS256

Para verificar visualmente los tokens firmados con RS256:
  1. Vaya a Dashboard > 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, 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

Más información