An Interest In:
Web News this Week
- April 27, 2024
- April 26, 2024
- April 25, 2024
- April 24, 2024
- April 23, 2024
- April 22, 2024
- April 21, 2024
O Bsico: JWT - JSON Web Token
JWT
O que ?
um token gerado a partir de dados "pessoais", esse que pode ser trafegado entre aplicaes ao se realizar requisies a APIs. As informaes contidas no token so pblicas e podem ser lidas por qual quer um que o possua, porm h um mecanismo de segurana que faz com que somente quem tenha a senha, possa modific-lo.
O que faz?
De forma geral os tokens podem ser usados para diversas finalidades, afinal eles so somente uma estrutura segura para o trafego de informaes, porm seu uso mais comum para autorizao de usurios em diversos servios.
Estrutura
Header
O Header do token ir conter duas propriedades, alg
para definir o algoritmo de hash e typ
para definir o tipo de token, no nosso caso ser JWT
.
{ "alg": /*algoritmo de hash*/, "typ": "JWT",}
{ "alg": "HS256", "typ": "JWT",}
Payload
O payload ir conter os dados do usurio, esses que no devem ser dados sensveis (CPF, carto, endereo, etc), apenas o essencial para dar ao usurio a autorizao necessria para navegar e interagir com a aplicao.
{ "username": "Big John", "name": "John Doe", "admin": false, "isPrime": true}
Signature
a assinatura utilizada para validar o token, dessa forma conseguimos verificar se o token recebido do cliente igual ao que enviamos anteriormente, caso no sejam iguais, o token considerado invlido.
// essa parte a concatenao, criptografada, do Header + Payload e ser gerada para ns pelo JWT.
Usando o JWT
Instalando
Antes de comearmos a implementar o JWT, precisamos instalar a biblioteca que ir gerar e validar os tokens, para isso usamos o comando:
npm i jsonwebtokennpm i -D @types/jsonwebtoken # caso usar TypeScript ser necessrio instalar os pacotes a parte
Configurando
Tendo instalado e importado o JWT para nosso arquivo, iremos configur-lo. Nas configuraes podemos definir o algoritmo de hash, o perodo de validade, entre outas opes.
As configuraes consistem em um Objeto JS com algumas chaves pr existentes. Consultar a documentao para as chaves.
const jwtConfig = { expiresIn: '4d', // <- Faz com que o token expire depois de 4 dias algorithm: 'HS256', // <- Indica o algoritmo de hash HS256 para criptografia};
Criando
Aps termos definido nossas configuraes iremos chamar o mtodo .sign()
para realmente criarmos nosso token, esse mtodo ir receber os dados, o secret e as configuraes como argumentos.
const jwt = require('jsonwebtoken'); // <- importao do jwtconst secret = 'meuSuperSegredo'; // Consideraes logo abaixo*const user = { email: '[email protected]', username: 'Roxo' }; // <- usurio fake para demonstraojwt.sign({ data: user }, secret, jwtConfig); // <- data a chave padro do JWT para passarmos os dados
*O secret deve ser armazenado em variveis de ambiente para maior segurana da aplicao, caso o declaremos hardcoded, estaremos deixando nossa aplicao vulnervel e nossos tokens/usurios em risco.
Validando
Para validarmos um token basta chamarmos o mtodo .verify()
, passando o token em questo e o secret utilizado como argumentos. No se preocupe em referenciar o token criado anteriormente, pois a biblioteca do JWT faz isso para ns.
Caso o token seja invlido, ou tenha expirado, o prprio mtodo ir nos retornar um erro, logo precisamos trabalhar essa validao dentro de um bloco try/catch
, ou algo equivalente.
/*Assim como na criao, na validao do token precisamos importar o jwt e o secret*No caso desse exemplo seria necessrio criar uma outra constante para definir o secret (NO RECOMENDADO)*/jwt.verify(token, secret);
Original Link: https://dev.to/gabrielhsilvestre/o-basico-jwt-json-web-token-2akc
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To