# JWS

> JWS (JSON Web Signature) é um padrão aberto para assinar digitalmente dados em formato JSON, garantindo que eles vieram de quem diz tê-los enviado e que não foram alterados no caminho. É muito usado em APIs para proteger tokens, como o JWT, e mensagens trocadas entre sistemas, sem esconder o conteúdo.

**Também conhecido como:** JSON Web Signature, Assinatura JWS, Token JWS, JWS

**Glossário:** [Glossário de A a Z](https://conota.dev/glossario/) · **Letra:** J

## O que é JWS, em palavras simples?

Pense no JWS como um lacre de segurança colado em uma mensagem. Qualquer pessoa consegue ler o que está escrito, mas, se alguém mexer no conteúdo, o lacre deixa de bater e o destinatário percebe a adulteração na hora.

Na prática, o JWS é uma forma padronizada de juntar três coisas: informações sobre como a assinatura foi feita, o conteúdo da mensagem e a própria assinatura. Por ser um padrão aberto, sistemas diferentes, escritos em linguagens diferentes, conseguem gerar e conferir essas assinaturas da mesma maneira.

## Como funciona um JWS?

Um JWS no formato mais comum, chamado de serialização compacta, é um texto dividido em três partes separadas por pontos. A primeira é o cabeçalho, que informa o algoritmo usado. A segunda é o payload, ou seja, o conteúdo protegido. A terceira é a assinatura, calculada a partir das duas primeiras e de uma chave.

As duas primeiras partes são codificadas em Base64URL, um formato que transforma os dados em texto seguro para trafegar em URLs e cabeçalhos HTTP. Isso não é criptografia: basta decodificar para ler o conteúdo. Quem recebe o JWS recalcula a assinatura com a chave adequada e compara com a que veio na mensagem. Se forem iguais, o conteúdo é íntegro e autêntico.

## Quais tipos de chave e algoritmo o JWS usa?

Existem dois grandes grupos. No primeiro, chamado simétrico, quem assina e quem verifica usam o mesmo segredo compartilhado, como nos algoritmos da família HS256, baseados em HMAC. É simples, mas exige que as duas pontas guardem o segredo com cuidado.

No segundo, chamado assimétrico, usa-se um par de chaves: a chave privada assina e a chave pública verifica, como nos algoritmos RS256 e ES256. Assim, qualquer um pode conferir a assinatura sem ter poder para criar assinaturas falsas, o que é útil quando muitos sistemas precisam validar mensagens de um mesmo emissor.

## Qual a diferença entre JWS, JWT e JWE?

JWT (JSON Web Token) é um formato de token com informações, chamadas de claims, como quem é o usuário e até quando o token vale. Na maioria das vezes, um JWT é transportado como um JWS, ou seja, é um token assinado. Por isso os dois termos costumam aparecer juntos.

JWE (JSON Web Encryption) tem outro objetivo: criptografar o conteúdo para que só o destinatário consiga lê-lo. Resumindo, o JWS protege contra alteração e comprova a origem, enquanto o JWE protege contra leitura indevida. Os dois podem ser combinados quando se precisa das duas garantias.

## Para que serve o JWS em integrações fiscais?

Em APIs fiscais, o JWS aparece principalmente na camada de segurança da comunicação entre sistemas. Ele pode proteger tokens de autenticação usados para acessar a API, garantindo que as permissões contidas no token não foram alteradas, e também pode assinar notificações enviadas por webhook, permitindo que o ERP confirme que a mensagem sobre a autorização ou rejeição de um documento veio mesmo do emissor.

É importante não confundir com a assinatura dos documentos fiscais em si. NF-e, NFC-e, CT-e, MDF-e e muitos modelos de NFS-e são assinados em XML, com certificado digital ICP-Brasil, seguindo regras próprias dos órgãos autorizadores. O JWS protege a conversa entre sistemas; a assinatura do XML dá validade jurídica ao documento.

## Quais cuidados tomar ao usar JWS?

Nunca coloque dados sensíveis no payload achando que estão escondidos, pois qualquer pessoa pode decodificá-lo. Sempre valide a assinatura antes de confiar no conteúdo, defina quais algoritmos são aceitos e rejeite tokens com algoritmo inesperado ou sem assinatura.

Guarde as chaves em local seguro, como um cofre de segredos, e faça a rotação delas periodicamente. Também vale conferir campos como data de expiração e emissor, quando existirem, para evitar que uma mensagem antiga e válida seja reaproveitada indevidamente.

## Exemplos de JWS

- Um ERP recebe um token de acesso no formato JWT assinado com RS256 e, antes de liberar a consulta de notas fiscais, verifica a assinatura usando a chave pública do provedor de autenticação.
- Uma plataforma de emissão envia um webhook informando que uma NF-e foi autorizada, com o corpo da mensagem assinado em JWS; o sistema do cliente valida a assinatura e só então atualiza o status do pedido.
- Um marketplace usa JWS com HS256 para assinar mensagens internas entre seu backend de vendas e seu serviço de integração fiscal, impedindo que alguém altere valores ou CNPJs no meio do caminho.
- Um desenvolvedor depura um problema de autenticação decodificando as duas primeiras partes de um JWS e percebe que o token já estava expirado quando foi enviado à API.

## Perguntas frequentes

### JWS criptografa os dados?

Não. O JWS apenas assina. O conteúdo fica codificado em Base64URL, que qualquer pessoa pode decodificar e ler. Para esconder o conteúdo, é preciso usar criptografia, como o JWE, ou garantir que a comunicação ocorra por HTTPS.

### Todo JWT é um JWS?

Não necessariamente, mas na maioria dos casos sim. Um JWT pode ser transportado como JWS (assinado) ou como JWE (criptografado). Os tokens de autenticação usados em APIs costumam ser JWTs assinados, ou seja, no formato JWS.

### Posso usar JWS para assinar uma NF-e?

Não. A NF-e e os demais documentos fiscais eletrônicos exigem assinatura digital do XML com certificado ICP-Brasil, conforme o leiaute oficial. O JWS serve para proteger tokens e mensagens entre sistemas, não para dar validade fiscal ao documento.

### O que acontece se o conteúdo de um JWS for alterado?

A assinatura deixa de corresponder ao conteúdo. Quando o destinatário recalcula a verificação, o resultado não confere e a mensagem deve ser rejeitada, indicando adulteração ou erro na transmissão.

## Termos relacionados

- [JWT](https://conota.dev/glossario/jwt.md)
- [JWE](https://conota.dev/glossario/jwe.md)
- [HMAC em webhooks](https://conota.dev/glossario/hmac-em-webhooks.md)
- [Key pair na assinatura digital](https://conota.dev/glossario/key-pair-na-assinatura-digital.md)
- [Token de autenticação](https://conota.dev/glossario/token-de-autenticacao.md)
- [Assinatura digital do XML](https://conota.dev/glossario/assinatura-digital-do-xml.md)

---

Fonte: [JWS](https://conota.dev/glossario/jws/) · Atualizado em 2026-10-22
