Was ist OAuth-Authentifizierung und wie funktioniert sie?
sobes.tech KI
Antwort von AI
OAuth ist ein offener Standard für Autorisierung. Er ermöglicht es einem Benutzer, einer Drittanbieteranwendung eingeschränkten Zugriff auf seine Daten zu gewähren, die auf einem anderen Dienst (Ressourcensever) gespeichert sind, ohne seine Anmeldedaten (Benutzername/Passwort) an diese Anwendung weiterzugeben.
Der OAuth-Workflow basiert auf der Ausgabe von "Zugriffstoken" anstelle von Anmeldedaten. Der typische Ablauf sieht folgendermaßen aus:
- Autorisierungsanfrage: Der Benutzer versucht, eine Aktion in einer Drittanbieteranwendung durchzuführen, die Zugriff auf Daten des Ressourcensevers benötigt. Die Anwendung initiiert eine Autorisierungsanfrage an den Autorisierungsserver des Ressourcensevers.
- Weiterleitung zum Autorisierungsserver: Der Benutzer wird auf die Seite des Autorisierungsservers weitergeleitet.
- Benutzerauthentifizierung: Der Benutzer authentifiziert sich beim Autorisierungsserver (falls noch nicht geschehen).
- Benutzerzustimmung: Der Autorisierungsserver bittet den Benutzer um Erlaubnis, der Drittanbieteranwendung einen bestimmten Zugriff auf seine Daten zu gewähren (Scopes). Der Benutzer stimmt zu oder lehnt ab.
- Ausgabe des Autorisierungscodes: Wenn der Benutzer zustimmt, leitet der Autorisierungsserver den Benutzer zurück an die Drittanbieteranwendung und stellt einen "Autorisierungscode" bereit.
- Austausch des Autorisierungscodes gegen ein Zugriffstoken: Die Drittanbieteranwendung, die den Code erhalten hat, sendet eine Anfrage direkt an den Autorisierungsserver, um den Code gegen ein "Zugriffstoken" (Access Token) und optional ein "Aktualisierungstoken" (Refresh Token) auszutauschen. Diese Anfrage erfolgt zwischen Servern, ohne den Browser des Benutzers, was die Sicherheit erhöht.
- Zugriff auf Daten: Die Drittanbieteranwendung verwendet das erhaltene Zugriffstoken, um Anfragen an den Ressourcensever im Namen des Benutzers zu stellen. Das Token wird bei jeder Anfrage im Header mitgesendet.
- Token-Validierung: Der Ressourcensever validiert das Zugriffstoken und gewährt, wenn es gültig ist und den angeforderten Scopes entspricht, Zugriff auf die Daten.
OAuth bietet mehrere Flows, die für unterschiedliche Szenarien geeignet sind, z.B.:
- Authorization Code Flow: Der sicherste, wird für Webanwendungen mit Server-Backend verwendet.
- Implicit Flow: Veraltet, wurde für Webanwendungen ohne Server-Backend genutzt.
- Client Credentials Flow: Für Anwendungen, die auf eigene Ressourcen zugreifen, nicht auf die des Benutzers.
- Resource Owner Password Credentials Flow: Nicht empfohlen, da es die Benutzeranmeldeinformationen an die Anwendung überträgt.
(Beispiel für den Authorization Code Flow)
In C# werden Bibliotheken wie ASP.NET Core Identity mit verschiedenen Providern (Google, Facebook usw.) oder Bibliotheken wie IdentityServer verwendet, um einen eigenen Autorisierungsserver zu erstellen.