JSON Web Token
O 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]
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.[6]
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.[7]
Ver também
Referências
- ↑ Nickel, Jochen (2016). Mastering Identity and Access Management with Microsoft Azure. [S.l.: s.n.] p. 84. ISBN 9781785887888. Consultado em 20 de julho de 2018
- ↑ Sevilleja, Chris. «The Anatomy of a JSON Web Token». Consultado em 8 de maio de 2015
- ↑ «Atlassian Connect Documentation». developer.atlassian.com. Consultado em 11 de maio de 2020
- ↑ «draft-ietf-jose-json-web-signature-41 - JSON Web Signature (JWS)». tools.ietf.org. Consultado em 8 de maio de 2015
- ↑ «draft-ietf-jose-json-web-encryption-40 - JSON Web Encryption (JWE)». tools.ietf.org. Consultado em 8 de maio de 2015
- ↑ Peyrott, Sebastián (2016–2018). The JWT Handbook (PDF). [S.l.]: Auht0 Inc.
- ↑ «JSON Web Key Sets». Auth0. Consultado em 16 de dezembro de 2022
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.