Die Frage ist häufig, aber nicht ganz sinnvoll. JWT ist eine Art Token, und OAuth ist ein Framework, das beschreibt, wie Token ausgegeben werden.
Was meinen wir mit "Framework"? Nur die Reihenfolge der Anfragen und Antworten und die Formate dieser, die zum Anfordern von Token verwendet werden können und sollten. OAuthv2 beschreibt separate "Flows" oder Grant-Typen für verschiedene Szenarien und verfügt über verschiedene Erweiterungen (wie PKCE), um die Sicherheit bestimmter Flows zu erweitern.
Das Ergebnis einer Tokenanforderung über eine OAuthV2-Bewilligung ist ... ein Token. Dieses Ding wird dann als "Inhaber-Token" verwendet, was bedeutet, dass jede Partei, die das Token besitzt, es vorlegen kann, wenn sie eine API-Serviceanfrage stellt (z. B. "Wie hoch ist der Kontostand auf meiner gespeicherten Wertkarte?"). Als Inhaber-Token funktioniert es wie Bargeld. Wenn Sie es halten, können Sie es verwenden. (Im Gegensatz zu Bargeld ist ein Token nicht das Verwenden und Verlieren. Vielleicht ist eine bessere Analogie eine Ganztageskarte für die Fahrt mit öffentlichen Verkehrsmitteln oder eine Ganztageskarte für Disneyworld.)
JWT ist eine bestimmte Art von Token, und JWT kann absolut als OAuth Bearer-Token verwendet werden. In der Tat ist dies die gängigste Praxis. Vor diesem Hintergrund ist "JWT vs OAuth" ein Vergleich von Äpfeln und Apfelkarren.
Oft denken die Leute, dass "OAuth-Token" immer ein undurchsichtiges Token impliziert - eine zufällige Folge von alphanumerischen Zeichen, die keine inhärente Bedeutung enthält -, die von einer OAuth-Token-Apotheke gewährt wird und die dann nur von demselben OAuth-Apothekensystem validiert werden kann. Dies ist jedoch nicht die einzige Art von OAuth-Token. Ein undurchsichtiger Token ist eine Art von Token. JWT kann als eine andere Art von OAuth-Token verwendet werden.
JWT sind dagegen nicht undurchsichtig. Das JWT ist kein "Zeiger" oder Verweis auf Informationen. Es enthält tatsächlich viele spezifische Informationen, die von jeder Partei, die über das Token verfügt, extrahiert und interpretiert werden können. Da die JWT echte Informationen enthält, kann eine JWT groß sein. 300 Bytes, 500 Bytes oder mehr, abhängig von den darin enthaltenen Ansprüchen und dem zum Signieren verwendeten Algorithmus. Wenn Leute sagen "JWT validieren sich selbst", bedeutet dies, dass jeder Inhaber des JWT es öffnen, validieren und dann Autorisierungsentscheidungen auf der Grundlage der darin dargestellten Ansprüche treffen kann. Das Validieren des JWT bedeutet: Überprüfen seiner Struktur, Decodieren der Base64-Codierung, Überprüfen des korrekten Schlüssels, Überprüfen der Signatur und anschließendes Überprüfen der erforderlichen Ansprüche im Token, Überprüfen des Ablaufs. Es ist keine einfache Sache, Eher ein mehrstufiger Prozess, aber natürlich gibt es viele Bibliotheken in verschiedenen Programmiersprachen, die damit zu tun haben, und natürlich gibt es die VerifyJWT-Richtlinie, die Ihnen dabei hilft, dies innerhalb eines Apigee Edge API-Proxys zu tun. Der Punkt ist, dass jeder Inhaber oder Empfänger einen Token verifizieren kann. Aus diesem Grund sagen wir, dass JWT "Federation" unterstützt - jeder kann ein Token generieren und jeder kann ein Token lesen und validieren.
kundenspezifische Ansprüche. Sowohl JWT- als auch undurchsichtige OAuth-Token können benutzerdefinierte Ansprüche zu diesem Thema enthalten. Sicherheit. Beide sind Inhaber-Token. Beide müssen als Geheimnisse geschützt werden. Ablauf. Beide können mit einem Ablauf markiert werden. Beide können aktualisiert werden. Der Authentifizierungsmechanismus oder die Erfahrung. Beide können dieselbe Benutzererfahrung bieten.