web-dev-qa-db-fra.com

Jeton Web JSON - pourquoi la charge utile est-elle publique?

Je ne comprends pas le raisonnement pour rendre les revendications/charge utile d'un JWT visibles publiquement après le décodage en base64.

Pourquoi?

Il semble qu'il serait beaucoup plus utile de le chiffrer avec le secret.

Quelqu'un peut-il expliquer pourquoi, ou dans quelle situation, garder ces données publiques est utile?

33
ineedhelp

Vous choisissez de ne pas chiffrer la charge utile pour les mêmes raisons que vous choisissez de ne pas chiffrer autre chose: le coût (aussi petit soit-il) dépasse les avantages, et de nombreuses données n'ont tout simplement pas besoin d'être sécurisées de cette façon.

Ce dont vous avez principalement besoin de protection, ce sont les personnes qui falsifient les données afin que le mauvais enregistrement soit mis à jour, ou que le compte courant de quelqu'un y trouve de l'argent qu'il n'est pas censé avoir. La signature du jeton Web JSON accomplit cela, car la modification d'une partie de la combinaison en-tête/charge utile/signature invalide le paquet.

Notez que vous pouvez toujours sécuriser les paquets au niveau de la couche de transport à l'aide de SSL.

29
Robert Harvey

L'utilisation du terme signature dans la RFC est analogue à une signature numérique en cryptographie asymétrique. En cryptographie asymétrique si l'expéditeur crypte un message avec sa clé privée, toute personne qui a le message peut le décrypter avec la clé publique de l'expéditeur. Le but du terme signature n'est donc pas de garder un message secret, mais de vérifier l'intégrité/l'expéditeur du message, c'est-à-dire qu'il n'a pas été modifié.

Dans le cas des JWT, le système d'envoi est à la fois le créateur et le consommateur du message (voir le diagramme ci-dessous), et le but est de s'assurer que le jeton transmis à l'utilisateur n'a pas été falsifié (par exemple, avec des privilèges élevés).

Et comme @Robert l'a mentionné, les JWT peuvent/doivent toujours être chiffrés avec TLS.

Voici une bonne explication des JWT et des signatures dont l'image ci-dessous provient. 5 étapes faciles pour comprendre les jetons Web JSON (JWT)

asdfasdf

4
Micah B.

Pour ajouter à la réponse de Robert Harveys, le chiffrement de la charge utile présente un inconvénient important - cela signifie que le destinataire du service doit partager un secret avec le serveur d'authentification (la clé de chiffrement) pour comprendre si le porteur du jeton est autorisé ou non. ou pas. En revanche n'importe qui peut valider un JWT en utilisant uniquement la clé publique publiée par le serveur d'authentification.

Ceci est un élément clé de la spécification de connexion openid car il permet aux applications clientes de valider les jetons d'identité émis par le serveur d'authentification, il facilite également le déploiement des serveurs de ressources (car ils n'ont pas besoin d'être déployés avec accès au cryptage secret ) et aide également lorsque vous essayez de diagnostiquer des problèmes avec un JWT émis.

2
Justin