Was ist der Unterschied zwischen JWTs und Bearer Token?


103

Ich lerne etwas über Autorisierung wie Basic, Digest, OAuth2.0, JWTs und Bearer Token.

Jetzt habe ich eine Frage.

Sie wissen, dass die JWTs im OAuth2.0-Standard als Access_Token verwendet werden. JWTs werden bei RFC 7519 und Bearer Token bei RFC 6750 angezeigt.

Zum Beispiel der Träger:

Authorization: Bearer <token>

Ich habe Token per AJAX an den Server gesendet oder Token zur Abfragezeichenfolge der URL hinzugefügt. Ich weiß, dass ein Token auch gesendet werden kann, indem es einem Anforderungsheader hinzugefügt wird. Bedeutet das, dass ein Token zum Header des Autorisierungsträgers hinzugefügt werden sollte?

Könnten Sie mir bitte die Beziehung zwischen JWTs und Bearer Token erzählen? Vielen Dank.

Antworten:


84

JWT ist ein Codierungsstandard für Token, der eine JSON-Datennutzlast enthält, die signiert und verschlüsselt werden kann.

JWT kann für viele Dinge verwendet werden, darunter Träger-Token, dh eine Information, die Sie einem Dienst präsentieren können, der Ihnen aufgrund dessen (Sie sind der "Träger") Zugang zu etwas gewährt.

Inhabertoken können auf verschiedene Weise in eine HTTP-Anforderung aufgenommen werden. Eines davon (wahrscheinlich das bevorzugte) ist der Autorisierungsheader. Sie können es aber auch in einen Anforderungsparameter, ein Cookie oder den Anforderungshauptteil einfügen. Dies geschieht hauptsächlich zwischen Ihnen und dem Server, auf den Sie zugreifen möchten.


Wie kann man dann das Token im Authorization-Header analysieren? Es gibt einen Bearer. Ich muss String.slice () verwenden. Gibt es eine Middleware, um es zu analysieren?
Laoqiren

Ich benutze Node.js
laoqiren

Verwenden Sie das auth-headerPaket, wenn Sie einen minimalen Parser möchten
Demurgos

Oder verwenden Sie einfach String.slice () :)
Paul Siersma

134

Kurze Antwort

JWTs sind eine bequeme Möglichkeit, Ansprüche zu verschlüsseln und zu verifizieren .

Ein Bearer-Token ist nur eine möglicherweise beliebige Zeichenfolge, die für die Autorisierung verwendet wird.

Kontext (Story-Zeit)

Vor einigen Jahren, vor der JWT-Revolution, <token>war a nur eine Zeichenfolge ohne intrinsische Bedeutung, z. B. 2pWS6RQmdZpE0TQ93X. Dieses Token wurde dann in einer Datenbank nachgeschlagen, die die Ansprüche für dieses Token enthielt. Der Nachteil dieses Ansatzes besteht darin, dass bei jeder Verwendung des Tokens ein DB-Zugriff (oder ein Cache) erforderlich ist.

JWTs verschlüsseln und verifizieren (durch Signieren) ihre eigenen Ansprüche . Dies ermöglicht es den Leuten, kurzlebige JWTs auszustellen, die zustandslos sind (sprich: in sich geschlossen, nicht von jemand anderem abhängig). Sie müssen die DB nicht treffen. Dies reduziert die DB-Last und vereinfacht die Anwendungsarchitektur, da sich nur der Dienst, der die JWTs ausgibt, um das Erreichen der DB- / Persistenzschicht kümmern muss (auf die refresh_tokenSie wahrscheinlich gestoßen sind ).


Vielen Dank, und wie wäre es mit Mac in Authorization, sind Mac und Bearer gleich?
Laoqiren

Am besten an anderer Stelle beantwortet, zB: dzone.com/articles/oauth-20-bearer-token-profile
rmharrison

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.