Ein JSON Web Token (JWT) ist ein offener Standard für die sichere Übertragung von Informationen zwischen Parteien als JSON-Objekt. Es wird häufig verwendet, um Benutzer zu authentifizieren und Informationen sicher zwischen einem Client und einem Server zu übertragen.
Wenn sich ein Benutzer anmeldet, erstellt der Server ein JWT, das aus drei Teilen besteht: einem Header, einem Payload und einer Signatur.
Der Header besteht in der Regel aus dem Token-Typ und dem kryptografischen Algorithmus, der zur Sicherung verwendet wird. Der Header wird dann Base64Url-codiert.
Der Payload enthält die Claims, also Aussagen über den Benutzer und zusätzliche Daten. Claims können Informationen wie die Benutzer-ID, den Benutzernamen, die Rolle und andere relevante Daten enthalten. Der Payload wird ebenfalls Base64Url-codiert.
Die Signatur wird erstellt, indem der Header, der Payload und ein geheimer Schlüssel unter Verwendung des im Header angegebenen Algorithmus kodiert werden. Dies gewährleistet die Integrität des Tokens und ermöglicht es dem Server, seine Authentizität zu überprüfen. Die Signatur wird an den kodierten Header und Payload angehängt, um das vollständige JWT zu bilden.
Nachdem das JWT erstellt wurde, wird es an den Client gesendet, der es speichert und bei nachfolgenden Anfragen mitsendet. Der Client fügt das JWT typischerweise in den Authorization
-Header der HTTP-Anfrage als Bearer-Token ein.
Beim Empfang des JWT überprüft der Server dessen Signatur mithilfe des geheimen Schlüssels. Ist die Signatur gültig, kann der Server die Informationen im Header und Payload dekodieren, um die Benutzerauthentifizierung durchzuführen. Der Server kann den Informationen im JWT vertrauen, ohne eine Datenbank abfragen oder zusätzliche Authentifizierungsprüfungen durchführen zu müssen. Dies macht JWTs zu einem effizienten und skalierbaren Authentifizierungsmechanismus.
Die Token-Authentifizierung ist eine Methode der Authentifizierung, bei der ein Zugriffstoken zum Zugriff auf Ressourcen verwendet wird, anstelle eines Benutzernamens und Passworts. Das Token wird typischerweise von einem Authentifizierungsserver ausgestellt und bei jeder Anfrage als Authentifizierungsnachweis mitgesendet. Die token-basierte Authentifizierung bietet mehrere Vorteile gegenüber der traditionellen Authentifizierung mit Benutzername und Passwort:
OAuth 2.0 ist ein offener Standard und Rahmenwerk für Autorisierung, das es einer Drittanbieteranwendung ermöglicht, eingeschränkten Zugriff auf die Ressourcen eines Benutzers zu erhalten. Es wird häufig verwendet, um Benutzern die Erlaubnis zu geben, externen Anwendungen den Zugriff auf ihre Daten auf Drittanbieter-Plattformen zu gewähren. OAuth 2.0 basiert auf JSON Web Tokens (JWTs) für Authentifizierung und Autorisierung.
OAuth 2.0 umfasst mehrere Parteien, wie den Ressourceneigentümer (den Benutzer, der die Ressourcen besitzt), den Client (die Drittanbieteranwendung), den Autorisierungsserver (verantwortlich für die Ausgabe von Zugriffstokens) und den Ressourcenserver (hält die geschützten Ressourcen).
Während des OAuth 2.0-Flusses erhält der Client eine Autorisierungserlaubnis vom Ressourceneigentümer. Der Client tauscht diese Erlaubnis dann beim Autorisierungsserver gegen ein Zugriffstoken ein. Das Zugriffstoken ist ein JWT, das die notwendigen Informationen zum Zugriff auf die geschützten Ressourcen auf dem Ressourcenserver enthält. Dieses Token wird dann vom Client verwendet, um auf die Ressourcen des Benutzers zuzugreifen.
Durch die Verwendung von OAuth 2.0 und JWTs können Anwendungen sicheren und kontrollierten Zugriff auf Benutzerdaten auf einer Vielzahl von Plattformen bieten.