1.Conceito
JSON Web Tokens (JWT) é um padrão aberto (RFC 7519) para a criação e uso de tokens de acesso que permite a transferência segura de informações entre partes. JWTs são compactos, autossufi-cientes e geralmente usados para autenticação e autorização em aplicações web e APIs.
2.Estrutura do JWT
Um JWT é composto por três partes: Header, Payload e Signatu-re, que são codificadas em Base64Url e concatenadas com um ponto (.) entre elas.
2.1. Header: Contém informações sobre o tipo de token (JWT) e o algoritmo de assinatura utilizado (por exemplo, HMAC, RSA).
2.2. Payload: Contém as informações (claims) transmitidas pelo token, como dados do usuário, expiração etc.
2.2. Payload: Contém as informações (claims) transmitidas pelo token, como dados do usuário, expiração etc.
2.3. Signature: Garante a integridade e autenticidade do token, criada a partir do Header, Payload e uma chave secreta ou par de chaves pública/privada.
Exemplo de um JWT: header.payload.signature
- Funcionamento
3.1. Criação de um JWT
- Definir o Header e o Payload com as informações necessárias.
- Codificar Header e Payload em Base64Url.
- Concatenar Header e Payload codificados com um ponto (.) entre eles.
- Criar a assinatura usando o algoritmo especificado no Header e uma chave secreta ou par de chaves pública/privada.
- Concatenar a assinatura codificada em Base64Url ao Header e Payload, usando um ponto (.) como separador.
3.2. Verificação de um JWT
- Separar Header, Payload e Signature do JWT.
- Verificar se o algoritmo de assinatura no Header é suportado e seguro.
- Recalcular a assinatura usando o Header, Payload e a chave correspondente.
- Comparar a assinatura recalculada com a assinatura do JWT recebido.
- Se a assinatura for válida, decodificar e verificar os claims do Payload.
- Aplicações comuns
4.1. Autenticação
JWTs são frequentemente usados para autenticação em aplicações web e APIs. O token é enviado ao servidor para autenticar o usuário e permitir o acesso aos recursos.
4.2. Autorização
Após a autenticação, JWTs podem ser usados para armazenar informações sobre o escopo de acesso do usuário, permitindo a autorização para diferentes recursos ou ações.
4.3. Troca de informações segura
JWTs permitem a transmissão segura de informações entre partes, garantindo a integridade e autenticidade dos dados.
- Segurança e boas práticas
5.1. Algoritmos de assinatura seguros
Utilizar algoritmos de assinatura seguros, como HMAC com SHA-256 (HS256) ou RSA com SHA-256 (RS256).
5.2. Armazenamento seguro de tokens
Armazenar JWTs de forma segura (por exemplo, usando cookies seguros, HttpOnly e SameSite).
5.3. Tempo de expiração
Definir um tempo de expiração adequado para os JWTs, evitando tokens com validade muito longa, o que pode aumentar o risco de comprometimento.
5.4. Evitar armazenamento de informações sensíveis
Evitar armazenar informações sensíveis no Payload do JWT, já que ele pode ser facilmente decodificado e visualizado.
5.5. Revogação de tokens
Implementar mecanismos para revogação de tokens JWT em caso de comprometimento, como listas negras ou bancos de dados de tokens revogados.
5.6. Utilizar HTTPS
Sempre utilizar HTTPS para transmitir JWTs entre cliente e servidor, garantindo a confidencialidade e integridade dos dados durante a transmissão.
- Implementações e bibliotecas
Existem várias bibliotecas e implementações disponíveis para diferentes linguagens e plataformas que facilitam a criação, verificação e uso de JWTs. Algumas delas incluem:
- jsonwebtoken (Node.js)
- PyJWT (Python)
- jwt-go (Go)
- ruby-jwt (Ruby)
- java-jwt (Java)
7.Conclusão
JWTs são uma solução eficiente e segura para autenticação, autorização e troca de informações entre partes em aplicações web e APIs. Ao seguir as melhores práticas e diretrizes de segurança, é possível criar soluções robustas e seguras para gerenciamento de acesso e autenticação. Além disso, a ampla disponibilidade de bibliotecas e implementações facilita a adoção e integração do JWT em diferentes ambientes e aplicações.
Vamos ver como essa teoria já foi cobrada em questão de concurso?
- Ano: 2020 Banca: CESPE / CEBRASPE Órgão: TJ-PA Prova: CESPE – 2020 – TJ-PA – Analista Judiciário – Programador
No que tange ao uso de serviços da API REST, a arquitetura JWT é um modelo utilizado para
A) conectar a uma fonte de dados remota.
B) autenticar e validar o acesso ao serviço através de um token.
C) realizar envio de dados através de arquivos JSON.
D) fazer autenticação através de um usuário e senha.
E) sincronizar as informações entre cliente e servidor.
Letra B
Comentário:
A arquitetura JWT (JSON Web Token) é um modelo utilizado para autenticar e validar o acesso a serviços da API REST através de um token. Esse token é gerado após a autenticação do usuário e contém informações relevantes, como as permissões concedidas ao usuário.
O uso do JWT é bastante comum em aplicações web modernas que fazem uso de APIs REST para acessar recursos protegidos. Ao invés de enviar credenciais de autenticação (como usuário e senha) em cada requisição, o cliente (geralmente um navegador web ou um aplicativo móvel) envia um token JWT que é verificado pelo servidor antes de conceder acesso ao recurso solicitado. Isso torna o processo de autenticação mais seguro e eficiente.
- O JWT (JSON Web Token) é um padrão aberto para criação de tokens de acesso em sistemas web. Sobre o funcionamento do JWT, é correto afirmar:
A) O JWT é um token de sessão que armazena informações criptografadas em cookies do navegador, permitindo o acesso a diferentes recursos do sistema sem a necessidade de autenticação adicional.
B) O JWT é composto por três partes: um cabeçalho (header) com informações sobre o tipo de token e algoritmo de criptografia, um payload (carga útil) com as informações do usuário e um tempo de expiração, e uma assinatura digital para garantir a integridade do token.
C) O JWT utiliza exclusivamente o algoritmo de criptografia AES para proteger as informações do usuário, garantindo assim um alto nível de segurança.
D) A validação do JWT é feita exclusivamente no lado do servidor, verificando a integridade da assinatura digital e a correspondência com as informações armazenadas no banco de dados.
E) O uso do JWT é limitado a aplicações web que utilizam exclusivamente a arquitetura REST, não sendo possível utilizá-lo em outras arquiteturas de serviços web.
Letra B
Comentário:
O JWT é composto por três partes: um cabeçalho (header) com informações sobre o tipo de token e algoritmo de criptografia, um payload (carga útil) com as informações do usuário e um tempo de expiração, e uma assinatura digital para garantir a integridade do token. O JWT não utiliza exclusivamente o algoritmo AES para proteger as informações, permitindo a utilização de outros algoritmos como o HMAC SHA-256 ou RSA. A validação do JWT pode ser feita tanto no lado do cliente quanto no lado do servidor, mas a verificação da assinatura digital sempre é realizada no servidor. O JWT pode ser utilizado em diversas arquiteturas de serviços web, não sendo limitado apenas à arquitetura REST.
- A arquitetura JWT é frequentemente utilizada em sistemas que implementam autenticação e autorização baseadas em tokens. Um JWT consiste em três partes principais.
Uma das partes do JWT é responsável por armazenar as informações do usuário autenticado.
Certo.
Comentário:
A segunda parte do JWT, chamada de payload, é onde as informações do usuário autenticado são armazenadas em formato JSON.
Então é isso!
Bons estudos e até o nosso próximo artigo.
Prof. Jósis Alves
Analista de TI no Supremo Tribunal Federal
Clique nos links abaixo:
Receba gratuitamente no seu celular as principais notícias do mundo dos concursos!
Clique no link abaixo e inscreva-se gratuitamente: