web-dev-qa-db-fra.com

Le jeton Web JWT doit-il être chiffré?

Je lisais un article sur le jeton Web JWT en tant que jeton d'accès en réponse à l'utilisateur. Certains mentionnent que le jeton Web devrait pouvoir être décodé par l'utilisateur.

Cela signifie-t-il que ce n'est pas une bonne pratique de décrypter l'intégralité du jeton Web? Par exemple, je suppose de renvoyer le jeton Web JWT suivant à l'utilisateur où cette information peut être décodée.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

Cependant, je pense que je ne veux pas laisser l'utilisateur capable de décoder son jeton d'accès, alors j'utilise un autre algorithme de cryptage pour tout crypter sous une autre forme comme suit et transmettre à l'utilisateur.

Donc, je décrypterais ce nouveau texte lorsque j'aurais ce jeton d'accès sur le serveur et le décoderais.

Est-il recommandé de procéder de cette façon si je ne souhaite pas exposer à l'utilisateur une partie de la valeur disponible dans la revendication (telle que l'ID utilisateur)? Sinon, quelles sont les alternatives?

16
vincentsty

JWT ( RFC7519 ) n'est qu'un moyen compact de transmettre en toute sécurité les revendications d'un émetteur au public via HTTP.

JWT peut être:

Il est logique de crypter un JWS si vous souhaitez garder les informations sensibles cachées du porteur (client) ou de tiers.

Les vraies questions sont: le public soutient-il JWE? Si oui, quels algorithmes sont pris en charge?

21
Florent Morselli

Les JWT sont "signés" et son contenu est donc protégé contre toute altération: vous ne pouvez pas modifier son contenu sans l'invalider.

Vous pouvez éventuellement "crypter" le contenu et donc le rendre visible uniquement à l'émetteur (l'entité qui crée le jeton) et au consommateur (l'entité qui est destinée à utiliser son contenu après vérification).

Il existe une norme pour cela: JWE

5
Eugenio Pace