Saltar al contenido principal
Todos los emitidos por Auth0 tienen JSON Web Signatures (JWSs), lo que significa que están firmados en lugar de cifrados. Un JWS representa contenido protegido con o códigos de autenticación de mensajes (MAC) mediante estructuras de datos basadas en JSON. Un JWT bien formado consta de tres cadenas codificadas en Base64url concatenadas, separadas por puntos (.):
  • Encabezado JOSE: contiene metadatos sobre el tipo de token y los algoritmos criptográficos utilizados para proteger su contenido.
  • carga útil de JWS (conjunto de claims): contiene afirmaciones de seguridad verificables, como la identidad del usuario y los permisos que se le han concedido.
  • firma de JWS: se utiliza para validar que el token es fiable y que no ha sido manipulado. Cuando utilice un JWT, debe comprobar su firma antes de almacenarlo y usarlo.
Un JWT normalmente tiene este aspecto:
JSON Web Token
Para ver por usted mismo qué hay dentro de un JWT, use el JWT.io Debugger. Le permite comprobar rápidamente que un JWT está bien formado e inspeccionar manualmente los valores de los distintos claims.
JWT Debugger

Encabezado JOSE

Objeto JSON que contiene los parámetros que describen las operaciones criptográficas y los parámetros utilizados. El encabezado JOSE (JSON Object Signing and Encryption) se compone de un conjunto de parámetros de encabezado que normalmente consisten en pares nombre/valor: el algoritmo de hash utilizado (por ejemplo, HMAC SHA256 o RSA) y el tipo de JWT.
{
      "alg": "HS256",
      "typ": "JWT"
    }

Carga útil de JWS

La carga útil contiene afirmaciones sobre la entidad (normalmente, el usuario) y atributos adicionales de la entidad, que se denominan claims. En este ejemplo, nuestra entidad es un usuario.
{
      "sub": "1234567890",
      "name": "John Doe",
      "admin": true
    }
Al trabajar con claims de JWT, debe tener en cuenta los distintos tipos de claims y las reglas de nomenclatura.

Firma JWS

La firma se usa para verificar que el emisor del JWT es quien dice ser y para garantizar que el mensaje no se haya modificado durante el proceso. Para crear la firma, se toman el encabezado y la carga útil codificados en Base64, junto con un secreto, y se firma todo con el algoritmo especificado en el encabezado. Por ejemplo, si está creando una firma para un token con el algoritmo HMAC SHA256, haría lo siguiente:
HMACSHA256(
      base64UrlEncode(header) + "." +
      base64UrlEncode(payload),
      secret)

Más información