SHARE ON

Já se perguntou como o JWT surgiu e quais problemas foi projetado para resolver? Você tem curiosidade sobre a infinidade de algoritmos disponíveis para assinar e fazer o encrypt de JWTs? Ou você tem interesse em começar a usar os JWTs o mais rápido possível?
Então este manual é para você.
Agradecimentos especiais
Capítulo 1 Introdução 1.1 O que é um JSON Web Token? 1.2 Que problema ele resolve? 1.3 Um pouco de história
Capítulo 2 Aplicações práticas 2.1 Sessões do lado do cliente/sem estado 2.1.1 Considerações de segurança 2.1.1.1 Remoção de assinatura 2.1.1.2 Falsificação de solicitação entre sites (CSRF) 2.1.1.3 Cross-site Scripting (XSS) 2.1.2 As sessões do lado do cliente são úteis? 2.1.3 Exemplo 2.2 Identidade federada 2.2.1 Tokens de acesso e atualização 2.2.2 JWTs e OAuth2 2.2.3 JWTs e OpenID Connect 2.2.3.1 Fluxos OpenID Connect e JWTs 2.2.4 Exemplo
Capítulo 3 JSON Web Tokens em detalhes 3.1 O header 3.2 O payload 3.2.1 Claims registrados 3.2.2 Claims públicos e privados 3.3 JWTs não protegidos 3.4 Criação de um JWT não protegido 3.4.1 Código de exemplo 3.5 Análise de um JWT não protegido 3.5.1 Código de exemplo
Capítulo 4 JSON Web Signatures 4.1 Estrutura de um JWT assinado 4.1.1 Visão geral do algoritmo para serialização compacta 4.1.2 Aspectos práticos de algoritmos de assinatura 4.1.3 Claims do header do JWS 4.1.4 Serialização JWS JSON 4.1.4.1 Serialização JSON do JWS achatada 4.2 Assinatura e validação de tokens 4.2.1 HS256: HMAC + SHA-256 4.2.2 RS256: RSASSA + SHA256 4.2.3 ES256: ECDSA usando P-256 e SHA-256
Capítulo 5 JSON Web Encryption (JWE) 5.1 Estrutura de um JWT criptografado 5.1.1 Algoritmos de criptografia de chave 5.1.1.1 Modos de gerenciamento de chaves 5.1.1.2 Chave de criptografia de conteúdo (CEK) e chave de criptografia JWE 5.1.2 Algoritmos de criptografia de conteúdo 5.1.3 O header 5.1.4 Visão geral do algoritmo para serialização compacta 5.1.5.1 Serialização JSON do JWE achatada 5.2 Criptografia e descriptografia de tokens 5.2.1 Introdução: gerenciamento de chaves com node-jose 5.2.2 AES-128 Key Wrap (Chave) + AES-128 GCM (Conteúdo) 5.2.3 RSAES-OAEP (Chave) + AES-128 CBC + SHA-256 (Conteúdo) 5.2.4 ECDH-ES P-256 (Chave) + AES-128 GCM (Conteúdo) 5.2.5 JWT aninhado: ECDSA usando P-256 e SHA-256 (assinatura) + RSAES-OAEP (chave criptografada) + AES-128 CBC + SHA-256 (conteúdo criptografado) 5.2.6 Descriptografia
Capítulo 6 JSON Web Keys (JWK) 6.1 Estrutura de um JSON Web Key 6.1.1 JSON Web Key Set Capítulo 7 Algoritmos JSON Web 7.1 Algoritmos gerais 7.1.1 Base64 7.1.1.1 Base64-URL 7.1.1.2 Código de exemplo 7.1.2 SHA 7.2 Algoritmos de assinatura 7.2.1 HMAC 7.2.1.1 HMAC + SHA256 (HS256) 7.2.2 RSA Figura 7.4: Expressão básica do RSA 7.2.2.1 Escolha de e, d e n Figura 7.5: Simetria entre e e d 7.2.2.2 Assinatura básica 7.2.2.3 RS256: RSASSA PKCS1 v1.5 usando SHA-256 7.2.2.3.1 Algoritmo 7.2.2.3.1.1 Primitiva EMSA-PKCS1-v1_5 7.2.2.3.1.2 Primitiva OS2IP Figura 7.7: Resultado da OS2IP 7.2.2.3.1.3 Primitiva RSASP1 Figura 7.8: Resultado de RSASP1 7.2.2.3.1.4 Primitiva RSAVP1 Figura 7.9: Resultado de RSAVP1 7.2.2.3.1.5 Primitiva I2OSP Figura 7.10: Decomposição de I2OSP 7.2.2.3.2 Código de exemplo 7.2.2.4 PS256: RSASSA-PSS usando SHA-256 e MGF1 com SHA-256 7.2.2.4.1 Algoritmo 7.2.2.4.1.1 MGF1: a função de geração de máscara 7.2.2.4.1.2 Primitiva EMSA-PSS-ENCODE 7.2.2.4.1.3 Primitiva EMSA-PSS-VERIFY 7.2.2.4.2 Código de exemplo 7.2.3 Curva elíptica Figura 7.11: Equação da curva elíptica Figura 7.13: Função exponencial 7.2.3.1 Aritmética da curva elíptica 7.2.3.1.1 Adição de pontos Figura 7.14: Adição de pontos 7.2.3.1.2 Duplicação de pontos Figura 7.15: Duplicação de pontos 7.2.3.1.3 Multiplicação escalar Figura 7.16: Multiplicação escalar 7.2.3.2 Algoritmo de assinatura digital de curva elíptica (ECDSA) 7.2.3.2.1 Parâmetros de domínio de curva elíptica 7.2.3.2.2 Chaves públicas e privadas 7.2.3.2.2.1 O problema do logaritmo discreto Figura 7.17: Chave privada como o logaritmo da chave pública 7.2.3.2.3 ES256: ECDSA usando P-256 e SHA-256 Figura 7.18: s 7.3 Atualizações futuras
Capítulo 8 Anexo A. Práticas recomendadas atuais 8.1 Armadilhas e ataques comuns 8.1.1 Ataque “alg: none” 8.1.2 Ataque de chave pública RS256 como segredo HS256 8.1.3 Chaves HMAC fracas 8.1.4 Pressuposições erradas de verificação empilhada de criptograf + assinatura 8.1.5 Ataques de curva elíptica inválida 8.1.6 Ataques de substituição 8.1.6.1 Destinatário diferente 8.1.6.2 Mesmo destinatário/JWT cruzado 8.2 Mitigações e práticas recomendadas 8.2.1 Executar sempre a verificação de algoritmo 8.2.2 Usar algoritmos adequados 8.2.3 Sempre realizar todas as validações 8.2.4 Sempre validar as entradas criptográficas 8.2.5 Escolher chaves fortes 8.2.6 Validar todos os claims possíveis 8.2.7 Usar o claim typ para separar tipos de tokens 8.2.8 Usar regras de validação diferentes para cada token 8.3 Conclusão
Hosted By

Sebastián Peyrott
Tenha uma solução de identidade do cliente de primeira linha, com segurança integrada.