O JWT (JSON Web Token) é uma forma de autenticação que permite que um servidor verifique a identidade de um usuário sem precisar armazenar informações sobre ele.
Ele é um padrão aberto para representar dados de forma compacta e segura entre as partes.
O JWT token tem várias vantagens, mas uma das principais é aumentar a segurança da troca de informações ou acesso que algum usuário possa ter.
Quer saber mais sobre essa forma de autenticação? Neste artigo, separamos as principais informações sobre o assunto para tirar todas as suas dúvidas! Acompanhe o nosso conteúdo e entenda sobre o tema!
Afinal, o que é um token?
Trata-se de um dispositivo, físico ou digital, que é muito utilizado em logins de plataformas online e empresas bancárias. Ele é um código numérico instantâneo, que protege contra fraudes e aumenta a segurança. Essas são as características do token na área de tecnologia.
No entanto, quando falamos do universo de criptomoedas, ele ganha a definição de representação digital de um ativo financeiro em uma plataforma de rede blockchain, que pode ser um investimento, propriedade ou dinheiro.
Blockchain é o nome da tecnologia de registro distribuído que nasceu junto com o Bitcoin, em 2008. É como se ele fosse um livro-razão que registra as transações entre as pessoas.
É importante destacar que existem vários tipos de tokens, como Payment Token (para pagamentos), Utility Token (arrecadar dinheiro), Security Token (adquirir uma porcentagem de um ativo), Equity Token (tem relação com determinadas ações), NFT (token não fungível).
Além disso, ele pode ser de segurança, de patrimônio, de utilidade e de pagamento.
Vale ressaltar que, apesar da segurança na troca de informações e proteção dos dados ser algo que muitas empresas priorizam, apenas 16% das empresas brasileiras aumentaram seu orçamento em segurança da informação e cibersegurança.
Os dados fazem parte do estudo realizado pela Marsh a pedido da Microsoft e mostram como algumas empresas ainda precisam se preocupar com a proteção de informações.
O que é o JWT token?
JWT significa JSON Web Token e é uma técnica RFC-7519 que é padrão com a função de autenticação entre duas partes, por meio de um token assinado. Ele transmite e armazena de forma segura os objetos JSON entre diferentes aplicações.
O JWT é assinado usando uma chave secreta com algoritmo HMAC ou um par de chaves públicas e privadas RSA ou ECDSA.
A origem desse tipo de token
O token JWT surgiu como um padrão da Internet para a criação de dados com assinatura opcional e/ou criptografia, definido pela RFC-7519.
Ele tem como base outros padrões baseados em JSON, como o JSON Web Signature e o JSON Web Encryption. Além disso, é vantajoso por ser compacto, seguro para URL e fácil de usar, especialmente em um contexto de login único no navegador da web.
O JSON Web Token faz parte de uma família de especificações conhecida como JOSE (JSON Object Signing and Encryption), em português significa Assinatura e criptografia de objetos JSON.
Para que serve um token JWT?
O token JWT é utilizado quando é necessário realizar uma autorização ou troca de informações em uma determinada aplicação.
Quando ele é utilizado para autorização, depois que o usuário estiver autenticado, cada requisição subsequente incluirá o JWT. Assim, é possível ter acesso aos serviços e recursos permitidos.
Ele é uma ótima maneira de transmitir informações com seguranças entre os envolvidos e garantir que são quem dizem ser.
Vale ressaltar que, para que haja confiabilidade nas informações trafegadas, elas são assinadas utilizando chaves públicas e privadas, ou seja, são criptografadas para garantir mais segurança.
A estrutura básica de um JSON Web Token
O JSON Web é composto por três partes: header, payload e signature. Explicaremos o que são cada uma delas a seguir:
Header
É o cabeçalho do token, composto por duas partes: typ, que indica o seu tipo, no caso, o JWT; e alg, que informa o algoritmo de assinatura, como HMAC, SHA256 ou RSA
Ela é codificado em Base64 e tem um formato parecido com o seguinte:
{
“alg”: “HS256”,
“typ”: “JWT”
}
Payload
Também é chamado de claims, que são declarações sobre uma entidade, ou seja, o usuário, que tem dados adicionais. É a segunda parte de um JWT e contém as informações relevantes de autenticação ou autorização que queremos transmitir.
As claims podem ser registradas e são definidas pelo padrão JSON Web Token com nomes e significados predefinidos, como:
- iss: issuer que é o emissor;
- aud: audience que é o destinatário;
- exp: expiration time que é o tempo de expiração;
- nbf: not before que é a data de validade;
- iat: issued at que é a data de início de validade;
- sub: subject que é o sujeito.
Elas também podem ser públicas que são definidas por quem usa o JSON Web e são utilizadas para identificar recursos ou contextos específicos, como nome e email.
Assim, como header, o payload também é codificado em Base64URL e tem um formato parecido com o seguinte:
{
“sub”: “1234567890”,
“name”: “Manuela Pereira”,
“email”: “[email protected]”,
“role”: “admin”
}
Signature
É a terceira e última parte da assinatura que deve ser feita com o heater e payload codificado, a chave secreta e o algoritmo especificado e assiná-lo.
Ela serve para garantir a integridade e a autenticidade e é gerada usando o algoritmo especificado no header e uma chave secreta ou um par de chaves públicas/privadas.
Por exemplo: se for utilizado o algoritmo HS562 e a chave secreta “seguro”, a signature será assim:
HMACSHA562(
base64UrlEncode(header) + “.” +
base64UrlEncode(payload),
seguro
)
Para formar o JWT completo, basta juntar as três partes com pontos entre elas.
Exemplos de uso de um JWT token
Agora que você já sabe um pouco mais sobre JSON Web Token, deixaremos tudo mais claro com um exemplo.
Imagine que Afonso trabalha como desenvolvedor e criou o front-end de uma aplicação para um banco. Na página de login, o servidor gera um JSON Web com os dados do usuário e da sessão e envia esses dados para uma API.
O servidor pegará os dados e retornará um token de identificação para aquele usuário. Assim, sempre quando ele logar na plataforma, passará por uma autenticação e terá acesso para entrar em determinadas áreas da aplicação.
Isso ocorre quando, depois que tudo estiver correto, o servidor autoriza a requisição e retorna os dados solicitados. Se houver algum problema com o token, o servidor retorna um erro de autenticação e pede para o usuário fazer o login novamente.
É possível armazená-lo em um cookie ou no armazenamento local. A cada requisição que o cliente faz ao servidor, ele envia o token junto no cabeçalho da requisição.
Além disso, o servidor verifica se ele é válido, se não está expirado e se a assinatura corresponde ao cabeçalho e ao payload.
JWT token e as assinaturas eletrônicas
A assinatura do JWT é uma fórmula padrão que trata da segurança do token. Por isso, ele precisa ser uma hash em Base64 gerada de um algoritmo de criptografía, como SHA256. Além disso, a hash precisa ser feita a partir do header e do payload.
As vantagens de usar um JSON Web Token
O JSON Web é muito utilizado, principalmente, para as trocas de informações e autorização em APIs, como mencionamos anteriormente. Isso porque ele é simples de manipular e é fácil para ser transportado pela rede.
Confira algumas das suas principais vantagens:
- maior segurança: é possível verificar se o conteúdo é válido ou não e confirmar se o remetente é realmente quem diz ser. Além disso, os dados são criptografados e protegidos contra ataques;
- reduz a carga no servidor: não é necessário consultar um banco de dados ou uma sessão para validar o usuário;
- facilita a integração com outros serviços ou aplicações: segue um padrão reconhecido e pode ser usado em diferentes plataformas;
- mais mobilidade: é possível fazer movimentações em qualquer lugar por meio de um dispositivo.
Como verificar se um token JWT é válido?
Para verificar se o JWT é válido, é necessário decodificá-lo e conferir se o header, o payload e a assinatura estão de acordo com o esperado.
Você já sabe que o cabeçalho contém informações sobre o algoritmo usado para gerar a assinatura. Já o payload contém as reivindicações do token, como o usuário e o tempo de expiração.
Por fim, a assinatura é uma combinação criptografada do header e do payload, que garante a integridade do token.
Para verificar se ele é válido, é possível usar uma biblioteca específica para a sua linguagem de programação, ou usar um serviço online, como jwt.io.
Como fazer autenticação JWT?
A autenticação JSON Web precisa de três componentes, que já mencionamos anteriormente: header, payload e assinatura. No entanto, é a assinatura que garante a integridade e a autenticidade do token.
Para enviá-lo, você pode colocá-lo no header Authorization da requisição HTTP, usando o esquema Bearer.
Quando a aplicação recebe essa requisição, realiza o processo de autenticação, ou seja, verifica se existe algum usuário cadastrado e se a senha está de acordo com o que foi informado.
Assim, se as credenciais estiverem corretas, a aplicação terá que gerar um JWT assinado. Além disso, no payload dele deve conter algumas chaves, como sub, iat e exp.
Se o token for válido, o servidor pode extrair as informações da carga útil e usá-las para autenticar o usuário. Por fim, ele retorna para o cliente no corpo da resposta HTTP.
TOTVS Assinatura Eletrônica
Agora que você já entendeu o que é um JWT token e as principais informações sobre o assunto, está na hora de conhecer um sistema que pode ser usado para autenticar os seus documentos e informações, além de garantir a proteção dos seus dados.
Estamos falando do TOTVS Assinatura Eletrônica, que utiliza o JWT no processo de assinatura eletrônica para autenticação. Com isso, proporciona mais segurança durante o processo.
Além disso, ele é uma plataforma simples e centralizada que conta com API para integração com softwares de terceiros. Também disponibiliza tecnologia mobile e em conformidade com a Lei Geral de Proteção de Dados Pessoais (LGPD).
Com o sistema da TOTVS, você pode ter toda a segurança na troca de informações e autenticação na hora de assinar um documento.
Tenha todos os serviços e ainda utilize o JWT token para autenticação com uma contratação até 6x mais barata que os concorrentes! Conheça o TOTVS Assinatura Eletrônica!
Conclusão
Em nosso artigo, você entendeu o que é token JWT, para o que ele serve e a sua estrutura. Abordamos também as vantagens de utilizá-lo e alguns exemplos de uso.
Você ainda aprendeu como verificar se ele é válido e a sua autenticação. Tudo isso para garantir a segurança das informações trocadas entre as partes.
Além disso, você compreendeu que ele é uma forma de garantir a segurança das suas informações.
Quer continuar aprendendo com os nossos conteúdos? Aproveite e leia também o nosso artigo sobre as diferenças entre criptografia simétrica e assimétrica.
Deixe aqui seu comentário