![translation](https://cdn.durumis.com/common/trans.png)
Esta es una publicación traducida por IA.
¿Qué es JWT (JSON Web Token)?
- Idioma de escritura: Coreano
- •
-
País de referencia: Todos los países
- •
- Tecnología de la información
Seleccionar idioma
Texto resumido por la IA durumis
- JSON Web Token (JWT) es un estándar que utiliza objetos JSON para transmitir información de forma segura, incorporando la información necesaria en el token y encriptándolo para su uso.
- JWT se compone de cabecera, carga útil y firma, la cabecera contiene el tipo de token y el algoritmo de firma utilizado, la carga útil almacena información sobre el token en forma de clave-valor.
- La firma solo puede ser descifrada por el servidor que emitió el token utilizando la clave privada, y JWT contiene toda la información por sí mismo, por lo que no se necesita un almacenamiento separado, lo que aumenta la escalabilidad en sistemas distribuidos.
¿Qué es JWT?
JSON Web Token (JWT) es un tipo de estándar abierto (RFC 7519) que proporciona una forma segura de transmitir información como un objeto JSON. En otras palabras, se utiliza para cifrar la información necesaria en un token y utilizarla.
JWT se destaca como un token firmado (signed token). Cuando se utiliza un par de claves pública/privada para la firma, esta firma garantiza que solo la parte que posee la clave privada firmó el token. Es decir, el servidor que posee la clave puede saber si este token es legítimo.
Estructura de JWT
JWT se compone de un encabezado (Header), una carga útil (Payload) y una firma (Signature).
Cada parte se codifica en Base64 y se utiliza un punto (.) como separador.
Encabezado
{
"alg": "HS256",
"typ": "JWT"
El encabezado contiene dos piezas de información principal. El tipo de token (typ) y el algoritmo de firma utilizado (alg). El algoritmo de firma se utiliza para generar y verificar la firma.
typ se establece en "JWT" y alg se establece en HMAC, SHA256, etc. Como en el ejemplo anterior, significa que se utiliza el algoritmo HS256 con la clave privada.
Carga útil
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
La carga útil contiene las afirmaciones (Claim) que desea transmitir en el token. La información de identificación del usuario o las propiedades del token se almacenan en formato clave-valor. En otras palabras, ¡el desarrollador puede agregar lo que quiera!
Según las especificaciones estándar, el nombre de la clave se define de forma compacta en 3 caracteres.
Las afirmaciones registradas son las siguientes:
- iss (Emisor): Emisor del token (incluye la información de identificación única del emisor del token)
- sub (Asunto): El sujeto al que se dirige el token
- aud (Público): El receptor del token
- exp (Tiempo de caducidad): Tiempo de caducidad del token (el token ya no es válido después de este tiempo)
- nbf (No antes): Fecha de activación del token (el token no se puede utilizar antes de esta hora)
- iat (Emitido en): Hora de emisión del token
- jti (ID de JWT): Identificador de token JWT (valor para distinguir entre varios emisores)
Si hay otros valores necesarios, puede agregarlos y usarlos.
Sin embargo, la carga útil no es un valor firmado encriptado, por lo que no contiene información confidencial.
Cualquiera puede leerlo si lo decodifica. jwt.io También se puede verificar directamente en el sitio.
Firma
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
your-256-bit-secret
El servidor cifra el encabezado y la carga útil codificados en base64 conectados por un punto (.) utilizando la clave privada your-256-bit-secret.
Por lo tanto, solo el servidor que emitió el token puede descifrar la firma (Signature) con la clave privada.
Si se considera la decodificación, se puede saber si base64UrlEncode (header) coincide con el valor de header de JWT y si base64UrlEncode (payload) coincide después de descifrar la firma con la clave privada.
El encabezado y la carga útil, excluyendo la firma, solo están codificados, por lo que se puede ver la información del cuerpo, pero la integridad y la seguridad de la información se mantienen a través de la firma.
JWT contiene toda la información necesaria por sí solo. Como JWT fue creado para compensar las desventajas de las sesiones que deben ser stateful, no requiere un almacén separado.
No es necesario mantener una sesión en el lado del servidor, por lo que es stateless, lo que aumenta la escalabilidad en sistemas distribuidos o arquitecturas de microservicios.
Se protege mediante una firma, una firma digital, y se puede garantizar la integridad de los datos.