Welcome to Our Website

JSON Web Token (JWT) explicou

JSON Web Token é um padrão usado para criar tokens de Acesso para uma aplicação.

ele funciona desta forma: o servidor gera um token que certifica a identidade do Usuário, e envia para o cliente.

o cliente irá enviar o token de volta para o servidor para cada pedido subsequente, para que o servidor saiba que o pedido vem de uma determinada identidade.

esta arquitetura prova ser muito eficaz em aplicações Web modernas, onde depois que o Usuário é autenticado, Realizamos pedidos de API tanto para um descanso ou uma API de GraphQL.quem usa o JWT?, Google, por exemplo. Se utilizar a APIs do Google, utilizará o JWT.

um JWT é assinado criptograficamente (mas não criptografado, portanto usando HTTPS é obrigatório ao armazenar dados do usuário no JWT), então há uma garantia de que podemos confiar Nele quando o recebemos, como nenhum intermediário pode interceptá-lo e modificá-lo, ou os dados que ele detém, sem invalidá-lo.

dito isso, JWTs são muitas vezes criticados por seu uso excessivo, e especialmente por eles serem usados quando soluções menos problemáticas podem ser usadas.

Você precisa formar sua opinião sobre o assunto., Não estou defendendo uma tecnologia em vez de outra, apenas apresentando todas as oportunidades e ferramentas que você tem à sua disposição.para que servem? Principalmente autenticação API, e autorização servidor-a-servidor.

como é gerado um token JWT?

Usando o nó.,js pode gerar a primeira parte do token usando este código:

const header = { "alg": "HS256", "typ": "JWT" }const encodedHeader = Buffer.from(JSON.stringify(header)).toString('base64')

Vamos definir o algoritmo de assinatura será de HMAC SHA256 (JWT suporta vários algoritmos), então vamos criar um buffer a partir deste JSON-codificado objeto, e nós codificá-lo usando base64.

O Resultado parcial é eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.a seguir adicionamos a carga útil, que podemos personalizar com qualquer tipo de dados., Há reservados chaves, incluindo iss e exp que identificam o emissor e o tempo de expiração do token.

Você pode adicionar seus próprios dados para o token usando um objeto:

const payload = { username: 'Flavio' }

Nós converter este objeto JSON-codificado, para um Buffer e codificamos o resultado usando base64, assim como fizemos antes:

const encodedPayload = Buffer.from(JSON.stringify(payload)).toString('base64')

neste caso, o resultado parcial é eyJ1c2VybmFtZSI6IkZsYXZpbyJ9.,

a seguir, obtemos uma Assinatura a partir do cabeçalho e conteúdo de carga útil, o que garante que o nosso conteúdo não pode ser alterado, mesmo se interceptado como a nossa assinatura será invalidada. Para isso, usaremos o módulo de nó

crypto Node:

usaremos osecretKey chave secreta e criaremos uma representação codificada base64 da assinatura encriptada.,

O valor da assinatura no nosso caso é

MQWECYWUT7bayj8miVgsj8KdYI3ZRVS+WRRZjfZrGrw=

Estamos quase pronto, só precisamos concatenar as 3 partes do cabeçalho da carga útil e da assinatura separando-os com um ponto:

const jwt = `${encodedHeader}.${encodedPayload}.${signature}`

API de autenticação

Esta é provavelmente a única forma sensata de usar JWT.

um cenário comum é: você se inscrever para um serviço e baixar um JWT do painel de serviço. Isto é o que você vai usar a partir de agora para autenticar todos os seus pedidos para o servidor.,

Outro caso de uso, que é o oposto, está a enviar a JWT quando você gerenciar a API e os clientes se conectam a você, e você quer que seus usuários enviem solicitações subseqüentes por apenas passando o token.

neste caso, o cliente precisa armazenar o token em algum lugar. Onde é o melhor lugar? Num biscoito HttpOnly. Os outros métodos são todos propensos a ataques XSS e, como tal, eles devem ser evitados. Um cookie HttpOnly não é acessível a partir de JavaScript, e é automaticamente enviado para o servidor de origem a cada pedido, então ele se encaixa perfeitamente no caso de uso.,

escolha a melhor biblioteca JWT

dependendo da língua e do ambiente que usar, pode escolher entre várias bibliotecas. Os mais populares estão listados no jwt.io website.

não use o JWTs como tokens de sessão

não deverá usar o JWTs para as sessões. Use um mecanismo de sessão regular do lado do servidor, pois é muito mais eficiente e menos propenso à exposição de dados.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *