SHARE ON

¿Se ha preguntado alguna vez cómo surgió JWT y qué problemas trataba de resolver? ¿Siente curiosidad por descubrir la enorme cantidad de algoritmos que hay disponibles para firmar y cifrar los JWT? ¿O prefiere ponerse al día con los JWT lo antes posible? Entonces este manual es para usted.
Agradecimientos
Capítulo 1 Introducción 1.1 ¿Qué es un JSON Web Token? 1.2 ¿Qué problema soluciona? 1.3 Un poco de historia
Capítulo 2 Aplicaciones prácticas 2.1 Sesiones del lado en cliente/sin estado 2.1.1 Consideraciones de seguridad 2.1.1.1 Eliminación de firmas 2.1.1.2 Falsificación de solicitud entre sitios (CSRF) 2.1.1.3 Scripting de sitio cruzado (XSS) 2.1.2 ¿Son útiles las sesiones del lado del cliente? 2.1.3 Ejemplo 2.2 Identidad federada 2.2.1 Tokens de acceso y actualización 2.2.2 JWTs y OAuth2 2.2.3 JWTs y OpenID Connect 2.2.3.1 Flujos OpenID Connect y JWTs 2.2.4 Ejemplo
Capítulo 3 Datos sobre los tokens web de JSON 3.1 El encabezado 3.2 La carga útil 3.2.1 Notificaciones registrados 3.2.2 Notificaciones públicas y privadas 3.3 JWTs no seguros 3.4 Creación de un JWT no seguro 3.4.1 Código de ejemplo 3.5 Análisis de un JWT no seguro 3.5.1 Código de ejemplo
Capítulo 4 4.1 Estructura de un JWT firmado 4.1.1 Descripción general del algoritmo para serialización compacta 4.1.2 Aspectos prácticos de algoritmos de firma 4.1.3 Notificaciones de encabezado JWS 4.1.4 Serialización JWS JSON 4.1.4.1 Serialización JSON JWS plana 4.2 Tokens de firma y validación 4.2.1 HS256: HMAC + SHA-256 4.2.2 RS256: RSASSA + SHA256 4.2.3 ES256: ECDSA con P-256 y SHA-256
Capítulo 5 5.1 Estructura de un JWT cifrado 5.1.1 Algoritmos de cifrado clave 5.1.1.1 Modos de gestión de claves 5.1.1.2 Clave de cifrado de contenidos (CEK) y Clave de cifrado JWE 5.1.2 Algoritmos de cifrado de contenido 5.1.3 El encabezado 5.1.4 Descripción general del algoritmo para serialización compacta 5.1.5.1 Serialización JSON do JWE plana 5.2 Criptografia e descriptografia de tokens 5.2.1 Introducción: Gestión de claves con node-jose 5.2.2 AES-128 Key Wrap (Clave) + AES-128 GCM (Contenido) 5.2.3 RSAES-OAEP (Clave) + AES-128 CBC + SHA-256 (Contenido) 5.2.4 ECDH-ES P-256 (Clave) + AES-128 GCM (Contenido) 5.2.5 JWT anidado: ECDSA usando P-256 y SHA-256 (Firma) + RSAES-OAEP (Clave cifrada) + AES-128 CBC + SHA-256 (Contenido cifrado) 5.2.6 Descifrado
Capítulo 6 Claves web de JSON (JWK) 6.1 Estructura de una clave web de JSON. 6.1.1 Conjunto claves web de JSON
Capítulo 7 Algoritmos web de JSON 7.1 Algoritmos generales 7.1.1 Base64 7.1.1.1 Base64-URL 7.1.1.2 Código de ejemplo 7.1.2 SHA 7.2 Algoritmos de firma 7.2.1 HMAC 7.2.1.1 HMAC + SHA256 (HS256) 7.2.2 RSA 7.2.2.1 Elección de e, d y n 7.2.2.2 Firma básica 7.2.2.3 RS256: RSASSA PKCS1 v1.5 con SHA-256 7.2.2.3.1 Algoritmo 7.2.2.3.1.1 EMSA-PKCS1-v1_5 primitivo 7.2.2.3.1.2 OS2IP primitivo 7.2.2.3.1.3 Primitivo RSASP1 7.2.2.3.1.4 Primitivo RSAVP1 7.2.2.3.1.5 Primitivo I2OSP 7.2.2.3.2 Código de ejemplo 7.2.2.4 PS256: RSASSA-PSS con SHA-256 e MGF1 con SHA-256 7.2.2.4.1 Algoritmo 7.2.2.4.1.1 MGF1: la función de generación de máscaras 7.2.2.4.1.2 Primitivo EMSA-PSS-ENCODE 7.2.2.4.1.3 Primitivo EMSA-PSS-VERIFY 7.2.2.4.2 Código de exemplo 7.2.3 Curva elíptica 7.2.3.1 Aritmética curva elíptica 7.2.3.1.1 Suma de puntos 7.2.3.1.2 Duplicado de puntos 7.2.3.1.3 Multiplicación escalar 7.2.3.2 Algoritmo de Firma Digital de Curva Elíptica (ECDSA 7.2.3.2.1 Parámetros del dominio de la curva elíptica 7.2.3.2.2 Claves públicas y privadas 7.2.3.2.2.1 El problema del logaritmo discreto 7.2.3.2.3 ES256: ECDSA con P-256 y SHA-256 7.3 Futuras actualizaciones
Capítulo 8 Anexo A. Mejores prácticas actuales 8.1 Obstáculos y ataques frecuentes 8.1.1 Ataque “alg: none” 8.1.2 Clave pública RS256 como ataque secreto HS256 8.1.3 Claves HMAC débiles 8.1.4 Cifrado apìlado incorrecto + Supuestos de comprobación de la firma 8.1.5 Ataques a la curva elíptica no válida 8.1.6 Ataques de sustitución 8.1.6.1 Destinatario diferente 8.1.6.2 Mismo destinatario/cruce de JWT 8.2 Mitigaciones y mejores prácticas 8.2.1 Realizar siempre la verificación del algoritmo 8.2.2 Utilizar algoritmos adecuados 8.2.3 Realizar siempre todas las validaciones 8.2.4 Validar siempre las entradas criptográficas 8.2.5 Escoger claves seguras 8.2.6 Validar todas las notificaciones posibles 8.2.7 Utilizar la notificación typ para separar los tipos de tokens 8.2.8 Utilizar diversas reglas de validación para cada token 8.3 Conclusión
Hosted By

Sebastián Peyrott
Obtenga la mejor identidad de cliente de su clase, con seguridad incorporada.