jwt jose rfc7515 rfc7519 security authentication standards

Padrões JOSE e JWT: RFC 7515 a 7519 (JWS, JWE, JWK, JWA, JWT)

Um mergulho profundo no stack JOSE. Aprenda sobre RFC 7515 (JWS), 7516 (JWE), 7517 (JWK), 7518 (JWA) e 7519 (JWT) para tokens de identidade seguros.

2026-04-11

Padrões JOSE e JWT: RFC 7515 a 7519

Se você já implementou autenticação web moderna, provavelmente usou JSON Web Tokens (JWT). Mas o JWT é apenas uma peça de uma família maior de padrões conhecidos como JOSE (JSON Object Signing and Encryption). Entender a relação entre esses padrões é crucial para construir aplicações seguras.

Neste guia, exploraremos os cinco RFCs principais que compõem o stack JOSE:

  • RFC 7515: JWS (JSON Web Signature)
  • RFC 7516: JWE (JSON Web Encryption)
  • RFC 7517: JWK (JSON Web Key)
  • RFC 7518: JWA (JSON Web Algorithms)
  • RFC 7519: JWT (JSON Web Token)

1. RFC 7515: JSON Web Signature (JWS)

O JWS é a forma mais comum de JWT. Ele garante que o conteúdo do token não foi adulterado. Ele fornece integridade e autenticidade, mas não confidencialidade (o conteúdo ainda é visível para qualquer pessoa que veja o token).

Estrutura:

Um JWS é tipicamente representado no formato Compact Serialization, que possui três partes separadas por pontos: BASE64URL(Header) . BASE64URL(Payload) . BASE64URL(Signature)

  • Header (Cabeçalho): Especifica o algoritmo usado para a assinatura (ex: {"alg": "HS256"}).
  • Payload (Carga Útil): Os dados reais que estão sendo assinados.
  • Signature (Assinatura): O resultado da assinatura do cabeçalho e da carga útil.

2. RFC 7516: JSON Web Encryption (JWE)

Enquanto o JWS fornece integridade, o JWE fornece confidencialidade. Ele criptografa a carga útil para que apenas o destinatário pretendido possa lê-la.

Estrutura:

A Serialização Compacta JWE possui cinco partes: BASE64URL(Header) . BASE64URL(Encrypted Key) . BASE64URL(Initialization Vector) . BASE64URL(Ciphertext) . BASE64URL(Authentication Tag)

O JWE é frequentemente usado quando o token contém informações sensíveis, como PII (Informações de Identificação Pessoal), que não devem ser visíveis para o cliente ou proxies intermediários.


3. RFC 7517: JSON Web Key (JWK)

Um JWK é uma estrutura de dados JSON que representa uma chave criptográfica. É usado para compartilhar chaves públicas entre servidores de forma padronizada.

Exemplo:

{
  "kty": "RSA",
  "use": "sig",
  "kid": "1b94c",
  "n": "vXl...",
  "e": "AQAB"
}

Uma coleção de JWKs é chamada de JWKS (JSON Web Key Set), geralmente encontrada em um endpoint como /.well-known/jwks.json.


4. RFC 7518: JSON Web Algorithms (JWA)

O JWA é o "dicionário" para o stack JOSE. Ele define os algoritmos específicos usados para assinatura (JWS) e criptografia (JWE).

Algoritmos Comuns:

  • HS256: HMAC usando SHA-256 (Simétrico).
  • RS256: RSASSA-PKCS1-v1_5 usando SHA-256 (Assimétrico).
  • ES256: ECDSA usando P-256 e SHA-256 (Assimétrico).
  • A128GCM: AES GCM usando chave de 128 bits (Criptografia).

5. RFC 7519: JSON Web Token (JWT)

O JWT é uma aplicação de JWS ou JWE onde a carga útil é um conjunto de Claims (Reivindicações). Reivindicações são informações sobre uma entidade (normalmente um usuário).

Reivindicações Padrão:

  • iss: Emissor (Issuer)
  • sub: Assunto (Subject, normalmente ID do usuário)
  • aud: Público (Audience)
  • exp: Tempo de expiração
  • iat: Emitido em (Issued At)

Resumo Comparativo

Padrão Propósito Analogia
JWS Integridade Uma carta assinada
JWE Confidencialidade Um envelope criptografado
JWK Representação de Chave Um arquivo de chave pública
JWA Catálogo de Algoritmos Uma lista de cifras
JWT Formato de Dados O token em si

Perguntas Frequentes FAQ

P: Um JWT é sempre um JWS? R: Nem sempre, mas em 99% dos casos, sim. Um JWT pode ser um JWS (assinado), um JWE (criptografado) ou até mesmo um JWT inseguro (sem assinatura).

P: Devo usar RS256 ou HS256? R: RS256 (Assimétrico) é geralmente preferido para tokens de identidade porque permite que o cliente verifique a assinatura sem precisar da chave privada. HS256 (Simétrico) é mais rápido, mas requer o compartilhamiento do segredo.

P: Onde posso ver o que há dentro de um JWT? R: Como as cargas úteis do JWS são apenas codificadas em Base64, você pode decodificá-las facilmente. No entanto, você nunca deve confiar nos dados a menos que tenha verificado a assinatura.


Ferramentas Relacionadas