기본: JWT - JSON 웹 토큰

JWT



예?



Éum token gerado a partir de dados "pessoais", esse que pode ser trafegado entre aplicações ao se realizar requisições a APIs. As informações contidas no token são públicas e podem ser lidas por qual quer um que o possua, porém há um mecanismo de segurança que faz com que somente quem tenha a senha, possa modificá-lo.

오 케 파즈?



De forma geral os tokens podem ser usados ​​para diversas finalidades, afinal eles são somente uma estrutura segura para o trafego de informações, porém seu uso mais comum é para autorização de usuários em diversos serviços.

에스트루투라



헤더



O Header do token irá conter duas propriedades, alg para definir o algoritmo de hash e typ para definir o tipo de token, nosso caso será JWT .

{
  "alg": /*algoritmo de hash*/,
  "typ": "JWT",
}



{
  "alg": "HS256",
  "typ": "JWT",
}


유효 탑재량



O payload irá conter os dados do usuário, esses que não devem ser dados sensíveis (CPF, cartão, endereço, etc), apenas o essencial para dar ao usuário a autorização necessária para navegar e interagir com aplicação.

{
  "username": "Big John",
  "name": "John Doe",
  "admin": false,
  "isPrime": true
}


서명



É a assinatura utilizada para validar o token, dessa forma conseguimos verificar se o token recebido do cliente é igual ao que enviamos anteriormente, caso não sejam iguais, o token é thinkado inválido.

// essa parte é a concatenação, criptografada, do Header + Payload e será gerada para nós pelo JWT.



우산도 또는 JWT



설치



Antes de começarmos a Implementer o JWT, precisamos instalar a biblioteca que irá gerar e validar os tokens, para isso usamos o comando:

npm i jsonwebtoken

npm i -D @types/jsonwebtoken  # caso usar TypeScript será necessário instalar os pacotes a parte


구성



Tendo instalado e importado o JWT para nosso arquivo, iremos configurá-lo. Nas configurações podemos definir o algoritmo de hash, o período de validation, entre outas opções.

configurações는 Objeto JS com algumas chaves pré existentes로 구성됩니다. Consultar a documentação 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
};


크리안도



Após termos definido nossas configurações iremos chamar o método.sign() para realmente criarmos nosso token, esse método irá receber os dados, o secret e as configurações como argumentos.

const jwt = require('jsonwebtoken');  // <- importação do jwt
const secret = 'meuSuperSegredo';  // Considerações logo abaixo*
const user = { email: '[email protected]', username: 'Roxo' };  // <- usuário fake para demonstração

jwt.sign({ data: user }, secret, jwtConfig);  // <- data é a chave padrão do JWT para passarmos os dados


*O secret deve ser armzenado em variáveis ​​de ambiente para maior segurança da aplicação, caso o declaremos hardcoded, estaremos deixando nossa vulnerável e nossos tokens/usuários em risco.

발리단도



Para validarmos um token basta chamarmos o método .verify() , passando o token em questão eo o secret utilizado como argumentos. JWT의 이전 문서를 참조할 때 주의해야 할 사항은 다음과 같습니다.

유효하지 않은 토큰, 유효 기간 만료, próprio método irá nos retornar um erro, logo precisamos trabalhar essa validação dentro de um blocotry/catch, ou algo equivalente.

/*
Assim como na criação, na validação do token precisamos importar o jwt e o secret
*No caso desse exemplo seria necessário criar uma outra constante para definir o secret (NÃO RECOMENDADO)
*/

jwt.verify(token, secret);

좋은 웹페이지 즐겨찾기