Was sind die wichtigsten Unterschiede zwischen JWT und die OAuth-Authentifizierung?
Habe ich einen neuen WELLNESSBEREICH mit einer Staatenlosen Authentifizierung Modell mit JWT. Ich werde oft gefragt zu finden OAuth für die Authentifizierung fließt wie bat mich, zu senden 'Bearer-Token' für alle Anfragen anstelle einer einfachen token-header, aber ich denke, dass OAuth ist viel komplexer als eine einfache JWT basierte Authentifizierung. Was sind die wichtigsten Unterschiede, sollte ich die JWT-Authentifizierung Verhalten sich wie OAuth?
Ich bin auch mit den JWT als meine XSRF-TOKEN zu verhindern, XSRF, aber ich werde aufgefordert, Sie zu halten getrennt? Sollte ich Sie trennen? Jede Hilfe wird hier dankbar sein und könnte dazu führen, eine Reihe von Leitlinien für die Gemeinschaft.
Du musst angemeldet sein, um einen Kommentar abzugeben.
TL;DR
Wenn Sie sehr einfache Szenarien, wie eine einzige client-Anwendung, eine einheitliche API, dann ist es möglicherweise nicht auszahlen zu gehen, OAuth 2.0, auf der anderen Seite, viele verschiedene clients (browser-basierte, native, mobile, server-Seite, etc.), dann kleben, um OAuth 2.0-Regeln machen könnte es leichter damit umzugehen, als zu versuchen, Ihre eigenen Rollen-system.
Wie bereits in einer anderen Antwort, JWT ( Erfahren Sie, JSON Web Token ), ist nur ein Zeichen-format, es definiert eine kompakte und in sich geschlossene Mechanismus für die übertragung der Daten zwischen den Parteien in einer Weise, die überprüft werden können und vertrauenswürdig, da es Digital signiert ist. Zusätzlich noch die encoding-Regeln des JWT auch diese Münzen ist sehr einfach zu verwenden im Kontext von HTTP.
Selbst enthalten (die tatsächliche token enthält Informationen über einen bestimmten Gegenstand), Sie sind auch eine gute Wahl für die Implementierung der stateless-Authentifizierung-Mechanismen (aka Schau Mama, keine Sitzungen!). Wenn Sie diesen Weg gehen, und die einzige Sache, die eine Partei vorlegen muss, um Zugriff auf eine geschützte Ressource ist das token selber, das token in Frage kann als ein bearer-token.
In der Praxis, was Sie tun können, die bereits klassifiziert werden, basierend auf bearer-tokens. Jedoch, denken Sie, dass Sie nicht mit bearer-Token gemäß der OAuth 2.0-bezogene Spezifikationen (siehe RFC-6750). Das würde bedeuten, sich auf die
Authorization
HTTP-header und die Verwendung derBearer
Authentifizierungsschema.Hinsichtlich der Nutzung der JWT zu verhindern, CSRF, ohne zu wissen, genaue details ist es schwierig festzustellen, ob sich die Wirksamkeit dieser Praxis, aber um ehrlich zu sein, scheint es nicht korrekt und/oder lohnt sich. Die folgenden Artikel (Cookies vs Tokens: The Definitive Guide) kann ein nützliches zu diesem Thema gelesen, vor allem die XSS-und XSRF-Schutz Abschnitt.
Einen letzten Ratschlag, auch wenn Sie nicht brauchen, um die volle OAuth-2.0, ich empfehlen, indem Sie Ihre access-token innerhalb der
Authorization
header anstatt mit benutzerdefinierten Header. Wenn Sie wirklich bearer-Token Folgen den Regeln von RFC-6750, wenn nicht, können Sie immer erstellen Sie ein benutzerdefiniertes Authentifizierungsschema und immer noch das header.(Quelle: RFC 6819, Abschnitt 5.4.1)
EXPIRE
sind gut für diese. In dieser Art von Situationen, die Sie brauchen schnellen Zugriff.OAuth 2.0 definiert ein Protokoll, d.h. gibt an, wie Token übertragen werden, JWT definiert ein token format.
OAuth 2.0 und "JWT-Authentifizierung" haben ähnliche Erscheinung, wenn es um die (2.) auf die Bühne, wo der Client stellt das token für die Ressource Server: das token wird weitergegeben in einen header.
Aber "JWT-Authentifizierung" ist nicht standard und nicht angeben wie erhält der Client die token in den ersten Platz (1. Etappe). Das ist, wo die wahrgenommene Komplexität OAuth kommt aus: es definiert auch die verschiedenen Möglichkeiten, in denen der Client kann erhalten ein access-token von etwas, das nennt sich einen Authorization Server.
Also der eigentliche Unterschied ist, dass JWT, ist nur ein Zeichen-format, OAuth 2.0 ist ein Protokoll (das kann Verwendung eines JWT als ein token format).
Erstens müssen wir unterscheiden JWT und OAuth. Im Grunde, JWT ist ein token-format. OAuth ist ein authorization-Protokoll verwenden kann, JWT als ein token. OAuth verwendet, server-side und client-side storage. Wenn Sie wollen, um wirklich Abmelden müssen Sie gehen mit OAuth2. Authentifizierung mit JWT token kann nicht Abmelden ist eigentlich. Weil Sie nicht über einen Authentifizierungs-Server, der verfolgt, Token. Wenn Sie möchten, bieten Sie eine API für 3rd-party-clients, die Sie verwenden müssen, OAuth2 auch. OAuth2 ist sehr flexibel. JWT-Implementierung ist sehr einfach und dauert nicht lange, zu implementieren. Wenn Ihre Anwendung diese Art von Flexibilität, Sie sollten gehen mit OAuth2. Aber wenn Sie nicht brauchen diese use-case-Szenario, Implementierung von OAuth2 ist eine Verschwendung von Zeit.
XSRF-token wird immer an die Kunden in jeder header der Antwort. Es spielt keine Rolle, wenn ein CSRF-token gesendet wird in einem JWT token oder nicht, da der CSRF-token abgesichert ist mit sich selbst. Deshalb senden CSRF-token in JWT ist unnötig.
JWT (JSON Web Token)- Es ist nur ein Zeichen-format. JWT Token JSON-codierte Daten-Strukturen enthält Informationen über Emittenten, unterliegen (Ansprüche), Ablaufzeit etc. Es ist eine signierte und fälschungssichere und Authentizität, und es kann verschlüsselt werden, zu schützen, die token-information mit symmetrischen oder asymmetrischen Ansatz. JWT ist einfacher als SAML 1.1/2.0 und von allen Geräten unterstützt, und es ist mächtiger als SWT(Simple Web Token).
OAuth2 - OAuth2 lösen ein problem, das Benutzer-will Zugriff auf die Daten mit client-software wie browse-basierten web-apps, native apps oder desktop-apps. OAuth2 ist nur für die Autorisierung der client-software autorisiert werden kann, um die Ressourcen zugreifen, die im Auftrag der end-user access token.
OpenID Connect - OpenID Connect baut auf der OAuth2 und Sie auf Authentifizierung hinzufügen. OpenID Connect-add gewisse Einschränkung zu OAuth2 wie UserInfo Endpunkt ID-Token, discovery und dynamische Registrierung von OpenID Connect-Anbieter-und session-management. JWT ist das erforderliche format für das token.
CSRF-Schutz - Sie brauchen nicht implementieren, der CSRF-Schutz, wenn Sie nicht speichern token in der browser-cookie.
Lesen Sie mehr details hier http://proficientblog.com/microservices-security/
Sieht es aus wie alle, die hier beantwortet verpasste den strittigen Punkt des OAUTH -
Aus Wikipedia
Der entscheidende Punkt hier ist
access delegation
. Warum sollte jemand erstellen, OAUTH, wenn es eine id/Kennwort-basierte Authentifizierung, unterstützt durch multifactored auth-wie von OTPs und weiter gesichert werden kann, indem JWTs die verwendet werden, um den sicheren Zugriff auf die Pfade (wie Bereiche, in OAUTH) und den Ablauf des ZugriffsEs gibt keinen Punkt, der die Verwendung von OAUTH, wenn die Verbraucher Zugriff auf Ihre Ressourcen(Ihre end Punkte) nur durch Ihre Vertrauenswürdige websites(oder apps), die Ihr wieder Gastgeber, die auf Ihre end Punkte
Können Sie gehen die OAUTH-Authentifizierung nur wenn Sie ein
OAUTH provider
in den Fällen, in denen die Ressource Besitzer (Benutzer) möchte den Zugriff auf Ihre(Ihre) Ressourcen (end-Punkte) über einen Drittanbieter-client(externe app). Und es ist genau geschaffen für den gleichen Zweck sein, wenn Sie Missbrauch im AllgemeinenEin weiterer wichtiger Hinweis:
Du bist frei mit dem Wort
authentication
für JWT-und OAUTH-aber weder die Authentifizierung Mechanismus. Ja ist ein token-Mechanismus und die andere ist mit dem Protokoll, aber nach der Authentifizierung werden nur verwendet, um die Autorisierung (access management). Sie haben, um zurück OAUTH entweder mit OPENID Art Authentifizierung oder Ihre eigenen client-AnmeldeinformationenJWT ist ein offener standard, der definiert, eine kompakte und in sich geschlossene Weise, die für die sichere übertragung von Informationen zwischen den Parteien. Es ist ein Authentifizierungs-Protokoll, wo wir zulassen, dass kodierte Ansprüche (tokens) übertragen werden zwischen zwei Parteien (client und server) und der token ist ausgestellt auf die Identifizierung eines Kunden. Mit jeder nachfolgenden Anfrage senden wir die token.
In der Erwägung, dass OAuth2 ist ein Autorisierungs-framework, wo es ein Allgemeines Verfahren und setups definiert durch den Rahmen. JWT verwendet werden kann, als ein Mechanismus innerhalb OAuth2.
Lesen Sie mehr dazu hier
OAuth oder JWT? Welche Sie benutzen und warum?
finden Sie die wichtigsten Unterschiede zwischen JWT & OAuth
OAuth 2.0 definiert ein Protokoll, & JWT definiert ein token format.
OAuth verwenden können, entweder JWT als token-format oder access-token, das ist ein bearer-token.
OpenID connect verwenden meist JWT als token-format.
Jwt ist eine strenge Reihe von Anweisungen für die Erstellung und Validierung von signierten access-Token. Die Token enthalten, die Ansprüche, die verwendet werden, durch eine app, um den Zugriff auf einen Benutzer
OAuth2 auf der anderen Seite ist nicht ein Protokoll, seine Delegierten Autorisierungs-framework. denke sehr ausführliche Leitlinie, dass Benutzer und Anwendungen autorisieren Sie bestimmte Berechtigungen zu anderen Anwendungen in privaten und öffentlichen Einstellungen. OpenID Connect die sitzt oben auf OAUTH2 gibt Ihnen die Authentifizierung und Autorisierung.Sie zeigt, wie mehrere unterschiedliche Rollen, die Benutzer in Ihrem system, server-side-Anwendungen wie eine API, und Kunden wie Webseiten oder native mobile apps authentifizieren können mit jeder othe