> ## 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 están estructurados los JSON Web Tokens con JSON Web Signatures (JWS).

# Estructura de un JSON Web Token

Todos los <Tooltip tip="JSON Web Token (JWT): formato estándar de ID Token (y, a menudo, de Token de acceso) utilizado para representar claims de forma segura entre dos partes." cta="Ver glosario" href="/es/docs/glossary?term=JWTs">JWTs</Tooltip> emitidos por Auth0 tienen [JSON Web Signatures (JWSs)](https://tools.ietf.org/html/rfc7515), lo que significa que están firmados en lugar de cifrados. Un JWS representa contenido protegido con <Tooltip tip="JSON Web Token (JWT): formato estándar de ID Token (y, a menudo, de Token de acceso) utilizado para representar claims de forma segura entre dos partes." cta="Ver glosario" href="/es/docs/glossary?term=digital+signatures">firmas digitales</Tooltip> 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](https://tools.ietf.org/html/rfc7519#section-4)): 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](/es/docs/secure/tokens/json-web-tokens/validate-json-web-tokens) antes de almacenarlo y usarlo.

Un JWT normalmente tiene este aspecto:

<Frame>
  <img src="https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/7FI79jeM55zrNGd6QFdxnc/80a18597f06faf96da649f86560cbeab/encoded-jwt3.png?fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=012ea0e0dd23584c5bb4e75a24322c23" alt="JSON Web Token" width="900" height="207" data-path="docs/images/cdy7uua7fh8z/7FI79jeM55zrNGd6QFdxnc/80a18597f06faf96da649f86560cbeab/encoded-jwt3.png" />
</Frame>

Para ver por usted mismo qué hay dentro de un JWT, use el [JWT.io Debugger](http://jwt.io). Le permite comprobar rápidamente que un JWT está bien formado e inspeccionar manualmente los valores de los distintos claims.

<Frame>
  <img src="https://mintcdn.com/translations/MV7tE-x71x8RWRES/docs/images/cdy7uua7fh8z/5U3Azt2AReuNzNuQqkRs5/9629ab9924a0212b74bee0b8fa88c295/legacy-app-auth-5.png?fit=max&auto=format&n=MV7tE-x71x8RWRES&q=85&s=0a9775655f059d443df62ab46151aeb8" alt="JWT Debugger" width="900" height="1013" data-path="docs/images/cdy7uua7fh8z/5U3Azt2AReuNzNuQqkRs5/9629ab9924a0212b74bee0b8fa88c295/legacy-app-auth-5.png" />
</Frame>

<div id="jose-header">
  ## Encabezado JOSE
</div>

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.

```json lines theme={null}
{
      "alg": "HS256",
      "typ": "JWT"
    }
```

<div id="jws-payload">
  ## Carga útil de JWS
</div>

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.

```json lines theme={null}
{
      "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.

<div id="jws-signature">
  ## Firma JWS
</div>

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:

```js lines theme={null}
HMACSHA256(
      base64UrlEncode(header) + "." +
      base64UrlEncode(payload),
      secret)
```

<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 JSON Web Tokens](/es/docs/secure/tokens/json-web-tokens/validate-json-web-tokens)
* [Conjuntos de claves web JSON](/es/docs/secure/tokens/json-web-tokens/json-web-key-sets)
* [Propiedades de los conjuntos de claves web JSON](/es/docs/secure/tokens/json-web-tokens/json-web-key-set-properties)
* [Ubicar conjuntos de claves web JSON](/es/docs/secure/tokens/json-web-tokens/locate-json-web-key-sets)
* [Obtener tokens de acceso](/es/docs/secure/tokens/access-tokens/get-access-tokens)
