OAuth2.0 – Open Authorization
OAuth ist ein Standard, der es Nutzern ermöglicht, Anwendungen von Drittanbietern Zugriff auf ihre Ressourcen zu gewähren (z. B. die Daten eines Nutzers auf einer Social-Media-Website), ohne ihre Anmeldedaten weitergeben zu müssen. Dies geschieht, indem der Nutzer die Anwendung autorisiert, in seinem Namen zu handeln, indem er ihr ein Zugriffstoken ausstellt, das die Anwendung dann für den Zugriff auf die geschützten Ressourcen verwenden kann.
OAuth ist ein Rahmen für die Zugriffsdelegation, kein Authentifizierungsprotokoll, es liefert keine Informationen über die Identität des Nutzers. Der Prozess beginnt damit, dass der Benutzer einer Drittanwendung die Erlaubnis erteilt, auf seine Ressourcen auf einem Ressourcenserver (RS) zuzugreifen. Der Autorisierungsserver (AS) generiert ein Zugriffstoken und sendet es an die Anwendung. Die Anwendung kann dann dieses Token verwenden, um auf die Ressourcen des Benutzers auf dem RS zuzugreifen. Das Token ist eine zufällige Zeichenfolge, die die der Anwendung erteilte Berechtigung darstellt und auch Angaben zum Benutzer und zum Umfang der Berechtigung enthalten kann.
Kann OAuth2.0 im Hintergrund laufen?
OAuth wird hauptsächlich verwendet, um Anwendungen von Drittanbietern Zugang zu den Ressourcen eines Nutzers zu gewähren (z. B. Daten auf einer Website für soziale Medien), ohne die Anmeldedaten des Nutzers weiterzugeben. Es beruht darauf, dass der Nutzer der Anwendung die Erlaubnis erteilt, was in der Regel durch einen interaktiven Prozess in einem Webbrowser geschieht.
OAuth2.0 im Detail
OAuth ist ein Standard, der es Nutzern ermöglicht, Anwendungen von Drittanbietern Zugriff auf ihre Ressourcen (z. B. Daten auf einer Social-Media-Website) zu gewähren, ohne ihre Anmeldedaten weitergeben zu müssen. Dies geschieht, indem der Nutzer die Anwendung autorisiert, in seinem Namen zu handeln, indem er ihr ein Zugriffstoken ausstellt, das die Anwendung dann für den Zugriff auf die geschützten Ressourcen verwenden kann.
OAuth definiert mehrere verschiedene „Grant-Typen“, die zum Erhalt eines Zugriffstokens verwendet werden können:
- Authorization Code Grant: Dies ist der gebräuchlichste Grant-Typ und wird verwendet, wenn der Benutzer beim Client (z. B. einer Webanwendung) anwesend ist und mit ihm interagieren kann.
- Implicit Grant: Dieser Typ ähnelt dem Berechtigungscode Grant, wird aber verwendet, wenn der Client ein öffentlicher Client ist (z. B. eine einseitige JavaScript-Anwendung), der nicht in der Lage ist, ein Client-Geheimnis zu wahren.
- Resource Owner Password Credentials Grant: Dies wird verwendet, wenn der Benutzer seine Anmeldedaten bereits an den Client weitergegeben hat (z. B. bei einer mobilen Anwendung). Der Client kann diese Anmeldeinformationen verwenden, um ein Zugriffstoken zu erhalten.
- Client Credentials Grant: Dies wird verwendet, wenn der Client im eigenen Namen handelt (d. h. ohne dass ein Benutzer anwesend ist), um auf Ressourcen zuzugreifen, deren Eigentümer der Client ist.
Im Allgemeinen bietet OAuth mehrere Vorteile gegenüber der herkömmlichen Authentifizierung auf der Grundlage von Benutzernamen und Kennwort:
- Delegation des Zugriffs: Mit OAuth können Benutzer den Zugriff auf ihre Ressourcen delegieren, ohne ihre Anmeldedaten weitergeben zu müssen.
- Trennung der Rollen: OAuth trennt die Rolle des Benutzers (Ressourcenbesitzer) von der Rolle der Anwendung (Client) und der Rolle des Servers (Ressourcenserver)
- Unterstützung für mehrere Geräte und Anwendungen: OAuth ermöglicht es Benutzern, den Zugriff auf ihre Ressourcen von mehreren Geräten und Anwendungen aus zu gewähren.
- Flexibilität bei der Zugriffsgewährung: OAuth unterstützt verschiedene Gewährungstypen, die je nach den Anforderungen des Clients, des Benutzers und der Ressourcen, auf die zugegriffen wird, verwendet werden können.
OAuth 2.0 ist die neueste Version des Protokolls, die die Einfachheit und Sicherheit des Protokolls verbessert hat und gleichzeitig abwärtskompatibel ist. Außerdem wurde das Konzept der Refresh-Tokens eingeführt, bei denen es sich um langlebige Token handelt, die verwendet werden, um neue Zugangs-Tokens zu erhalten, wenn das aktuelle abläuft.
Es ist wichtig zu beachten, dass OAuth ein Autorisierungsprotokoll und kein Authentifizierungsprotokoll ist, es liefert keine Informationen über die Identität des Benutzers. Die Authentifizierung muss separat gehandhabt werden und es gibt eine Erweiterung von OAuth namens OpenID Connect, die dies ermöglicht.
Vorteile von OAuth2.0
- Delegation des Zugriffs: OAuth ermöglicht es Benutzern, den Zugriff auf ihre Ressourcen zu delegieren, ohne ihre Anmeldedaten weiterzugeben, was es sicherer machen kann als andere Protokolle.
- Trennung der Rollen: OAuth trennt die Rolle des Benutzers (Ressourcenbesitzer) von der Rolle der Anwendung (Client) und der Rolle des Servers (Ressourcenserver), was die Verwaltung des Zugriffs auf Ressourcen erleichtern kann.
- Unterstützung für mehrere Geräte und Anwendungen: OAuth ermöglicht es Benutzern, den Zugriff auf ihre Ressourcen von mehreren Geräten und Anwendungen aus zu gewähren.
- Flexibilität bei der Zugriffsgewährung: OAuth unterstützt verschiedene Gewährungstypen, die je nach den Anforderungen des Clients, des Benutzers und der Ressourcen, auf die zugegriffen wird, verwendet werden können.
- Token aktualisieren: OAuth 2.0 ermöglicht die Verwendung von Refresh-Tokens, d. h. langlebigen Tokens, mit denen nach Ablauf des aktuellen Tokens neue Zugriffstoken erworben werden können.
Nachteile von OAuth2.0
- Sicherheitsrisiken: Es ist bekannt, dass OAuth bei unsachgemäßer Implementierung Sicherheitsrisiken birgt. So werden beispielsweise Client-Anmeldeinformationen manchmal unsicher gespeichert oder Zugangs-Tokens sind undicht. Es ist wichtig, die mit OAuth verbundenen Risiken zu verstehen und das Protokoll korrekt zu implementieren.
- Kompliziert: Die Implementierung von OAuth kann komplex sein, insbesondere für Entwickler, die mit dem Protokoll und den damit verbundenen Technologien nicht vertraut sind.
- Begrenzt auf Autorisierung: OAuth ist nur für die Autorisierung gedacht und liefert keine Informationen über die Identität des Benutzers. Die Authentifizierung muss separat gehandhabt werden, und OAuth 2.0 verfügt nicht über einen integrierten Authentifizierungsmechanismus wie OpenID Connect.
Es ist wichtig zu wissen, dass OAuth 2.0 ein leistungsfähiger und flexibler Standard für die Autorisierung ist, aber er behandelt keine Authentifizierung und liefert keine Informationen über die Identität des Benutzers. Er wird hauptsächlich verwendet, um Anwendungen von Drittanbietern den Zugriff auf die Ressourcen des Benutzers zu gestatten, und er bietet auch einen Mechanismus zur Aktualisierung der Token, wenn diese ablaufen. Es kann jedoch etwas kompliziert zu implementieren sein, und wenn es nicht korrekt implementiert wird, kann es Sicherheitsprobleme geben. Es sollte in Kombination mit anderen Protokollen oder Standards wie OpenID Connect verwendet werden.