Quelle est la différence entre JWT et Bearer Token?

105

J'apprends quelque chose sur l'autorisation comme Basic, Digest, OAuth2.0, JWT et Bearer Token.

Maintenant, j'ai une question.

Vous savez que les JWT sont utilisés comme Access_Token dans la norme OAuth2.0. Les JWT apparaissent à la RFC 7519 et le jeton de support est à la RFC 6750.

Par exemple, le porteur:

Authorization: Bearer <token>

J'avais l'habitude d'envoyer un jeton au serveur par AJAX ou d'ajouter un jeton à la chaîne de requête de l'url. Je sais qu'un jeton peut également être envoyé en l'ajoutant à un en-tête de demande. Cela signifie-t-il que le jeton doit être ajouté à l'en-tête du porteur d'autorisation?

Pourriez-vous me dire la relation entre les JWT et Bearer Token? Merci beaucoup.

laoqiren
la source

Réponses:

85

JWT est une norme de codage pour les jetons qui contient une charge de données JSON qui peut être signée et chiffrée.

JWT peut être utilisé pour beaucoup de choses, parmi lesquelles il y a des jetons de porteur, c'est-à-dire une information que vous pouvez présenter à un service qui, du fait que vous l'avez (vous êtes le "porteur"), vous donne accès à quelque chose.

Les jetons de support peuvent être inclus dans une requête HTTP de différentes manières, l'une d'entre elles (probablement la préférée) étant l'en-tête d'autorisation. Mais vous pouvez également le mettre dans un paramètre de requête, un cookie ou le corps de la requête. C'est principalement entre vous et le serveur auquel vous essayez d'accéder.

Thilo
la source
Alors comment analyser le jeton dans l'en-tête d'autorisation, il y a un porteur, je dois utiliser String.slice (), y a-t-il un middleware pour l'analyser?
laoqiren
J'utilise Node.js
laoqiren
Utilisez le auth-headerpackage si vous voulez un analyseur minimal
Demurgos
1
Ou utilisez simplement String.slice () :)
Paul Siersma
138

Réponse courte

Les JWT sont un moyen pratique d' encoder et de vérifier les revendications .

Un jeton de support est juste une chaîne, potentiellement arbitraire, qui est utilisée pour l'autorisation.

Contexte (heure du conte)

Il y a quelques années, avant la révolution JWT, a <token>était juste une chaîne sans signification intrinsèque, par exemple 2pWS6RQmdZpE0TQ93X. Ce jeton a ensuite été recherché dans une base de données, qui contenait les revendications pour ce jeton. L'inconvénient de cette approche est que l'accès à la base de données (ou un cache) est requis chaque fois que le jeton est utilisé.

Les JWT encodent et vérifient (via la signature) leurs propres revendications . Cela permet aux gens d'émettre des JWT de courte durée qui sont sans état (lire: autonomes, ne dépendent de personne d'autre). Ils n'ont pas besoin de frapper la DB. Cela réduit la charge de la base de données et simplifie l'architecture de l'application car seul le service qui émet les JWT doit se soucier de toucher la couche de base de données / persistance (celle que refresh_tokenvous avez probablement rencontrée).

rmharrison
la source
Merci, et qu'en est-il du Mac dans l'autorisation, le Mac et le porteur sont-ils identiques?
laoqiren
Meilleure réponse ailleurs, par exemple: dzone.com/articles/oauth-20-bearer-token-profile
rmharrison