[rest] Em poucas palavras, o que é JWT?

REST

JWT

29/01/2019

valendo DevUPsss galera, quem poderia me ajudar a montar essa definição ;-)
abraçosss
Gladstone Matos

Gladstone Matos

Curtidas 3

Melhor post

Vinnicius Gomes

Vinnicius Gomes

29/01/2019

JWT (JSON Web Token), ele é um sistema de transferência de dados que pode ser enviado via URL, POST ou em um cabeçalho HTTP (header) de maneira "segura", essa informação é assinada digitalmente, por exemplo assinada com o algoritmo HMAC (https://pt.wikipedia.org/wiki/HMAC), ou um par de chaves pública/privada usando RSA (https://pt.wikipedia.org/wiki/RSA_(sistema_criptogr%C3%A1fico)).

Um exemplo de situação que ele pode ser usado é a autenticação, uma vez que o usuário está conectado, cada pedido que vier irá incluir o JWT, permitindo que o usuário continue acessando serviços e recursos que são foram liberados com tal token (Single sign-on (SSO)).

A estrutura do JWT é em 3 partes divididas por pontos:

- Cabeçalho
Consiste em 2 partes geralmente, o tipo do token, que é JWT e o tipo do algorítimo de HASH, como por exemplo HMAC SHA256 ou RSA, exemplo:
{
  "alg": "HS256",
  "typ": "JWT"
}
Este será a primeira parte do JSON codificado em base64 para formar o JWT

- Payload (carga de dados ou os dados enviados)
Esta é a segunda parte do token, ele contem os "pedidos". Esse "pedidos" são declarações sobre uma entidade (geralmente, o usuário) e metadados adicionais e existem 3 tipos: reserved, public, e private claims. Um exemplo:
{
  "sub": "1234567890",
  "name": "Nome",
  "admin": true
}


- Assinatura
Para gerar a assinatura você deve usar o Cabeçalho e o Payload codificando eles, usando o algorítimo definido no cabeçalho e assinar, no exemplo do Cabeçalho usamos HS256 (HMAC SHA256), então deve ficar algo como:
HMACSHA256(
base64UrlEncode(Cabeçalho) + "." +
base64UrlEncode(Payload),
secret)
A assinatura é usada para verificar que o emissor da "JWT", é realmente "quem" se diz ser e também para verificar se a mensagem não foi alterada ao longo do caminho.

O resultado seria algo como:
(Cabeçalho em base64).(Payload em base64).(Assinatura em base64)

Um exemplo de envio via header no HTTP:
GET /foo/bar HTTP/1.1
Host: www.exemplo.com
Authorization: Bearer (Cabeçalho em base64).(Payload em base64).(Assinatura em base64)

Ou seja por ser algo que é transmitido via HTTP pode ser usado com qualquer linguagem que suporte os requisitos mínimos para gerar o TOKEN e enviar uma requisição HTTP, como Java, C#, PHP, Python.

Site: https://jwt.io
GOSTEI 4

Mais Respostas

Gladstone Matos

Gladstone Matos

29/01/2019

JWT (JSON Web Token), ele é um sistema de transferência de dados que pode ser enviado via URL, POST ou em um cabeçalho HTTP (header) de maneira "segura", essa informação é assinada digitalmente, por exemplo assinada com o algoritmo HMAC (https://pt.wikipedia.org/wiki/HMAC), ou um par de chaves pública/privada usando RSA (https://pt.wikipedia.org/wiki/RSA_(sistema_criptogr%C3%A1fico)).

Um exemplo de situação que ele pode ser usado é a autenticação, uma vez que o usuário está conectado, cada pedido que vier irá incluir o JWT, permitindo que o usuário continue acessando serviços e recursos que são foram liberados com tal token (Single sign-on (SSO)).

A estrutura do JWT é em 3 partes divididas por pontos:

- Cabeçalho
Consiste em 2 partes geralmente, o tipo do token, que é JWT e o tipo do algorítimo de HASH, como por exemplo HMAC SHA256 ou RSA, exemplo:
{
  "alg": "HS256",
  "typ": "JWT"
}
Este será a primeira parte do JSON codificado em base64 para formar o JWT

- Payload (carga de dados ou os dados enviados)
Esta é a segunda parte do token, ele contem os "pedidos". Esse "pedidos" são declarações sobre uma entidade (geralmente, o usuário) e metadados adicionais e existem 3 tipos: reserved, public, e private claims. Um exemplo:
{
  "sub": "1234567890",
  "name": "Nome",
  "admin": true
}


- Assinatura
Para gerar a assinatura você deve usar o Cabeçalho e o Payload codificando eles, usando o algorítimo definido no cabeçalho e assinar, no exemplo do Cabeçalho usamos HS256 (HMAC SHA256), então deve ficar algo como:
HMACSHA256(
base64UrlEncode(Cabeçalho) + "." +
base64UrlEncode(Payload),
secret)
A assinatura é usada para verificar que o emissor da "JWT", é realmente "quem" se diz ser e também para verificar se a mensagem não foi alterada ao longo do caminho.

O resultado seria algo como: (Cabeçalho em base64).(Payload em base64).(Assinatura em base64)
Um exemplo de envio via header no HTTP:
GET /foo/bar HTTP/1.1
Host: www.exemplo.com
Authorization: Bearer (Cabeçalho em base64).(Payload em base64).(Assinatura em base64)

Ou seja por ser algo que é transmitido via HTTP pode ser usado com qualquer linguagem que suporte os requisitos mínimos para gerar o TOKEN e enviar uma requisição HTTP, como Java, C#, PHP, Python.

Site: https://jwt.io


perfect Vinnicius super obrigado por compartilhar o conhecimento com a comunidade! oootimo :)))
GOSTEI 2
Vinnicius Gomes

Vinnicius Gomes

29/01/2019

JWT (JSON Web Token), ele é um sistema de transferência de dados que pode ser enviado via URL, POST ou em um cabeçalho HTTP (header) de maneira "segura", essa informação é assinada digitalmente, por exemplo assinada com o algoritmo HMAC (https://pt.wikipedia.org/wiki/HMAC), ou um par de chaves pública/privada usando RSA (https://pt.wikipedia.org/wiki/RSA_(sistema_criptogr%C3%A1fico)).

Um exemplo de situação que ele pode ser usado é a autenticação, uma vez que o usuário está conectado, cada pedido que vier irá incluir o JWT, permitindo que o usuário continue acessando serviços e recursos que são foram liberados com tal token (Single sign-on (SSO)).

A estrutura do JWT é em 3 partes divididas por pontos:

- Cabeçalho
Consiste em 2 partes geralmente, o tipo do token, que é JWT e o tipo do algorítimo de HASH, como por exemplo HMAC SHA256 ou RSA, exemplo:
{
  "alg": "HS256",
  "typ": "JWT"
}
Este será a primeira parte do JSON codificado em base64 para formar o JWT

- Payload (carga de dados ou os dados enviados)
Esta é a segunda parte do token, ele contem os "pedidos". Esse "pedidos" são declarações sobre uma entidade (geralmente, o usuário) e metadados adicionais e existem 3 tipos: reserved, public, e private claims. Um exemplo:
{
  "sub": "1234567890",
  "name": "Nome",
  "admin": true
}


- Assinatura
Para gerar a assinatura você deve usar o Cabeçalho e o Payload codificando eles, usando o algorítimo definido no cabeçalho e assinar, no exemplo do Cabeçalho usamos HS256 (HMAC SHA256), então deve ficar algo como:
HMACSHA256(
base64UrlEncode(Cabeçalho) + "." +
base64UrlEncode(Payload),
secret)
A assinatura é usada para verificar que o emissor da "JWT", é realmente "quem" se diz ser e também para verificar se a mensagem não foi alterada ao longo do caminho.

O resultado seria algo como: (Cabeçalho em base64).(Payload em base64).(Assinatura em base64)
Um exemplo de envio via header no HTTP:
GET /foo/bar HTTP/1.1
Host: www.exemplo.com
Authorization: Bearer (Cabeçalho em base64).(Payload em base64).(Assinatura em base64)

Ou seja por ser algo que é transmitido via HTTP pode ser usado com qualquer linguagem que suporte os requisitos mínimos para gerar o TOKEN e enviar uma requisição HTTP, como Java, C#, PHP, Python.

Site: https://jwt.io

perfect Vinnicius super obrigado por compartilhar o conhecimento com a comunidade! oootimo :)))


Imagina! É um prazer ajudar, espero que tenha conseguido ajudar no seu entendimento sobre essa tecnologia
GOSTEI 1
POSTAR