O JSON Web Token (JWT, às vezes pronunciado ) é um padrão da Internet para a criação de dados com assinatura opcional e/ou criptografia cujo payload contém o JSON que afirma algum número de declarações. Os tokens são assinados usando um segredo privado ou uma chave pública/privada.
Por exemplo, um servidor pode gerar um token com a declaração "logado como administrador" e fornecê-lo a um cliente. O cliente pode então usar esse token para provar que está logado como administrador. Os tokens podem ser assinados pela chave privada de uma parte (geralmente do servidor), para que a parte possa posteriormente verificar se o token é legítimo. Se a outra parte, por alguns meios adequados e confiáveis, estiver na posse da chave pública correspondente, ela também poderá verificar a legitimidade do token.
Os tokens foram projetados para serem compactos, seguros para URL e utilizáveis, especialmente em um contexto de login único (SSO) no navegador da web. As declarações JWT geralmente podem ser usadas para transmitir a identidade de usuários autenticados entre um provedor de identidade e um provedor de serviços ou qualquer outro tipo de declaração, conforme exigido pelos processos de negócios.
O JWT depende de outros padrões baseados em JSON: JSON Web Signature e o JSON Web Encryption.
Estrutura Um JWT é composto de três partes, o header, o payload e a assinatura, todas são escritas em JSON, e são codificadas usando Base64.
O header especifica se o token será assinado, e caso seja qual o algorítmo usado para a assinatura usando a declaração obrigatória alg (algorítmo). Além disso pode conter as declarações opcionais typ (tipo de mídia) e cty (tipo de conteúdo).
{ "alg": "HS256", "typ": "JWT" }O payload pode conter qualquer tipo de dado relevante para a aplicação, não existem declarações obrigatórias.{ "sub": "1234567890", "name": "John Doe", "admin": true }A assinatura consiste da codificação e encriptação do header, payload e um segredo. Esse campo é usado para provar a autenticidade de um token, prevenindo que ele possa ser modificado por um agente malicioso. As declarações registradas para a assinatura são:
iss (issuer) quem criou o token; sub (subject) sobre quem o token se refere; aud (audience) para quem o token é esperado; exp (expiration) data de expiração; nbf (not before) a partir de quando o token é valido; iat (issued at) data de criação; jti (jwt id) identificador único;
A assinatura é verificada pela aplicação que deseja validar a autenticidade do token. Se o token for assinado com criptografia assimétrica, a chave pública pode ser optida através de uma API que fornece tal chave no formato de uma JWK.
Ver também
https://jwt.io/
Categoria:JSON