Autenticação JWT
O JSON Web Token (JWT) é um formato compacto de representação de reivindicações destinado a ambientes com restrições de espaço, como cabeçalhos de autorização HTTP e parâmetros de consulta de URI. Uma reivindicação é representada como um par nome-valor que contém um Nome de Reclamação e um Valor de Reclamação..
As solicitações em um JWT são codificados como um objeto JSON que é usado como a carga útil de uma estrutura JSON Web Signature (JWS) ou como o texto simples de uma estrutura JSON Web Encryption (JWE). As solicitações de JWT podem ser assinadas digitalmente ou protegidas por integridade com um Message Authentication Code (MAC) e também podem ser criptografadas.
Visão geral do JWT:
JWT representa um conjunto de solicitações como um objeto JSON codificado em uma estrutura JWS ou JWE. Este objeto JSON é o Conjunto de Solicitações de JWT. O objeto JSON consiste em zero ou mais pares nome-valor (ou membros), em que os nomes são sequências e os valores são valores JSON arbitrários. Esses membros são as reivindicações que são representadas pelo JWT. Os nomes de membros no Conjunto de Solicitações JWT são referidos como Nomes de Solicitações. Os valores correspondentes são chamados de Valores de Indenização.
Um JWT é representado como uma sequência de partes URL separadas por caracteres de ponto ('.'). Cada parte contém um valor base64url-encoded. O número de partes no JWT é dependente da representação do JWS resultante usando o JWS Compact Serialization ou JWE usando o JWE Compact Serialization.
Tipos de JWT
Exemplo de JWT.
The format of a typical JWS is <Base 64 URL codificado Header json>.<Carga útil codificada em Base 64 URK json>.<Base 64 URL assinatura codificada>
Header
{
"alg": "RS256",
"typ": "JWT",
"kid": "a1"
}
Payload
{
"sub": "1234567890",
"name": "John Doe",
"admin": true,
"iat": 1516239022,
"exp": 1531762065
}eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImExIn0
.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNTMxNzYyMDY1fQ
.z4qfO0leZK2mYp_w-jFNidTx-Ri0PRMHLsOAG1Den7ZR4QntIJhU17U0afgoe5VzISXS6jW61ga3XEk39ey1G7a_-ARIVZLYN11fHDhsPuzN7PPkbT
5uWpHEUhVWRR8dxHqXmNiDaWjNhTnzHCBpfrRHj5pR_dzubbuE_uPuvDkConforme ilustrado na amostra, o JWS possui as seguintes partes e é separado pelo "." .
- Cabeçalho =
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImExIn0 - Carga útil =
G4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNTMxNzYyMDY1fQ - Assinatura =
z4qfO0leZK2mYp_w-jFNidTx-Ri0PRMHLsOAG1Den7ZR4QntIJhU17U0afgoe5VzISXS6jW61ga3XEk39ey1G7a_-ARIVZLYN11fHDhsPuzN7PPkbT5uWpHEUhVWRR8dxHqXmNiDaWjNhTnzHCBpfrRHj5pR_dzubbuE_uPuvDk