web-dev-qa-db-fra.com

Quelle est la différence entre la signature Web JSON (JWS) et le jeton Web JSON (JWT)?

J'ai codé un service RESTful en Java. Voici ce que j'ai compris jusqu'à présent (corrigez-moi si je me trompe):

L'autorisation de jeton se fait en utilisant JSON Web Tokens (JWT) qui se composent de trois parties: l'en-tête, la charge utile et le secret (partagé entre le client et le serveur).

J'ai compris ce concept et suis tombé sur Signature Web JSON (JWS) en lisant sur JWT.

JWS est également une entité codée similaire à JWT ayant un en-tête, une charge utile et un secret partagé.

Question: Quelle est la différence entre les deux concepts, à savoir JWT et JWS? Et s'ils se ressemblent techniquement, alors quelle est la différence dans leur implémentation?

C'est la première fois que je travaille avec l'authentification basée sur des jetons, il est donc possible que j'ai mal compris le concept.

P.S. J'ai découvert JWS en parcourant les exemples sur ce site .

44
leo

JWT en fait tilise JWS pour sa signature, à partir de la spécification:

JSON Web Token (JWT) est un moyen compact et sûr pour les URL de représenter les revendications à transférer entre deux parties. Les revendications dans un JWT sont codées en tant qu'objet JSON (JavaScript Object Notation) qui est utilisé comme charge utile d'une structure JSON Web Signature (JWS) ou comme texte en clair d'une structure JSON Web Encryption (JWE), permettant aux revendications d'être signé numériquement ou MACé et/ou chiffré.

Un JWT est donc une structure JWS avec un objet JSON comme charge utile. Certaines clés (ou revendications) facultatives ont été définies, telles que iss, aud, exp etc.

Cela signifie également que sa protection de l'intégrité ne se limite pas aux secrets partagés, mais que la cryptographie à clé publique/privée peut également être utilisée.

42
Hans Z.