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

O JWT é principalmente dos dois tipos a seguir:
  • JSON Web Signature (JWS) -O conteúdo desse tipo de JWT é assinado digitalmente para assegurar que os conteúdos do JWT não sejam violados em trânsito entre o emissor e o receptor.. O conteúdo ou solicitações do JWS também podem ser legíveis por outras partes. Portanto, um JWS pode ser usado para verificar a integridade do conteúdo ou solicitação, mas não deve ser usado para transferir dados sensíveis como senhas. O JWS é normalmente usado em HTTPS ou SSL porque não impede inerentemente que os dados sejam lidos.
  • JSON Web Encryption (JWE) -O conteúdo desse tipo de JWT é criptografado digitalmente. Isso significa que pode ser usado para verificar a integridade e proteger o conteúdo. Ele pode ser usado em HTTP simples, pois criptografa o conteúdo de forma inerente.
Observação: o sistema Sterling™ Order Management suporta apenas JWS.

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>

A assinatura a seguir é obtida por meio da assinatura do conteúdo do cabeçalho e da carga útil codificados por URL Base 64 com uma chave criptográfica usando o algoritmo RS256.
Header 
{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "a1"
}

Payload
{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true,
  "iat": 1516239022,
  "exp": 1531762065
}
A ilustração a seguir é a representação JWS de amostra do JWT assinado com a chave privada RS256 ..
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImExIn0
.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNTMxNzYyMDY1fQ
.z4qfO0leZK2mYp_w-jFNidTx-Ri0PRMHLsOAG1Den7ZR4QntIJhU17U0afgoe5VzISXS6jW61ga3XEk39ey1G7a_-ARIVZLYN11fHDhsPuzN7PPkbT
5uWpHEUhVWRR8dxHqXmNiDaWjNhTnzHCBpfrRHj5pR_dzubbuE_uPuvDk

Conforme 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