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.

Laoqiren
quelle

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.

Thilo
quelle
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 ).

rmharrison
quelle
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