Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
April 5, 2022 11:12 pm GMT

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

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To