JSON Web TokenO JSON Web Token (JWT, às vezes pronunciado [dʒɒt]) é 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.[1] 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.[2][3] O JWT depende de outros padrões baseados em JSON: JSON Web Signature e o JSON Web Encryption.[4][5] EstruturaUm 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.[6]
{
"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:
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.[7] Ver tambémReferências
|