Was ist OAuth?

OAuth oder Open Authorization ist ein offener Standard, der es Benutzern ermöglicht, Anwendungen von Drittanbietern Zugriff auf ihre Ressourcen zu gewähren, ohne dass sie ihre Zugangsdaten weitergeben müssen. Anstatt dass Benutzer ihre Passwörter offenlegen, autorisiert OAuth Drittanbieter-Apps, die temporäre Zugriffstoken verwenden, den Zugriff im Namen des Benutzers zu gewähren.

Angenommen, Sie verwenden eine Drittanbieter-App wie Mailchimp, ein beliebtes E-Mail-Marketing-Tool, und möchten Ihre Google-Kontakte importieren, um eine E-Mail-Liste zu erstellen. Anstatt jeden Kontakt manuell auf Mailchimp herunter- und hochzuladen, können Sie mit OAuth Ihr Google-Konto sicher mit Mailchimp verbinden und so eingeschränkten Zugriff auf Ihre Kontakte gewähren, ohne Ihr Passwort preiszugeben.

OAuth vs. OAuth 2.0: Was ist der Unterschied?

OAuth oder OAuth 1.0 erfordert, dass jede Autorisierungsanfrage mit einer kryptografischen Signatur signiert wird. Dies bedeutet, dass die Drittanbieter-App die Anfrage mit einem gemeinsamen geheimen Schlüssel signieren muss, den der Autorisierungsserver replizieren muss, um die Anfrage zu überprüfen. Kryptografische Signaturen stellen zwar sicher, dass die Anfrage nicht verändert wurde, verschlüsseln die Daten jedoch nicht, sodass sie während der Übertragung abgefangen oder gestohlen werden können.

OAuth 2.0 vereinfacht den Autorisierungsprozess, indem es kryptografische Signaturen durch HTTPS-Verschlüsselung ersetzt und so eine sichere End-zu-End-Datenübertragung ermöglicht. OAuth 2.0 verwendet kurzlebige Zugriffstoken und Aktualisierungstoken, um die Sicherheit durch Minimierung der Token-Offenlegung zu erhöhen. Es bietet auch eine größere Flexibilität, indem es mehrere verschiedene Autorisierungsabläufe basierend auf dem Anwendungstyp unterstützt, z. B. Web-Apps, mobile Apps und Server-zu-Server-Kommunikation.

FunktionOAuth 1.0 OAuth 2.0
Sicherheit Verwendet kryptografische Signaturen mit einem gemeinsamen geheimen Schlüssel für jede Anforderung. Verhindert Manipulationen, aber nicht das Abfangen.Verwendet HTTPS/TLS-Verschlüsselung für eine sichere End-zu-End-Datenübertragung
Token-System Einzelner Token-Typ ohne StandardablaufVerwendet kurzlebige Zugriffstoken und Aktualisierungstoken für eine bessere Sicherheit
Verifizierung anfordern Sowohl die App als auch der Server müssen übereinstimmende Signaturen generieren, um Anfragen zu überprüfenTLS übernimmt die Verschlüsselung und Verifizierung von Anfragen
Autorisierungsabläufe Ein einziger Flow für alle AnwendungsfälleMehrere Flows, die verschiedene Anwendungstypen unterstützen (Web, Mobile, Server-to-Server)
Komplexität der Implementierung Komplex aufgrund der Anforderungen an kryptografische SignaturenEinfachere Implementierung durch Abhängigkeit von HTTPS
Moderne Nutzung In modernen Anwendungen weniger verbreitetIndustriestandard für moderne Anwendungen
Kompromiss bei der Sicherheit Zusätzliche Signatur-Sicherheitsschicht, aber komplexerBasiert auf TLS-Sicherheit, ist aber einfacher korrekt zu implementieren
Empfohlen fürLegacy-Systeme, die eine Signaturprüfung erfordern Die meisten modernen Anwendungen und API

Während sowohl OAuth als auch OAuth 2.0 praktische Optionen sind, wird OAuth 2.0 empfohlen, da es einfacher zu implementieren ist und in modernen Anwendungen häufiger verwendet wird.

Funktionsweise von OAuth

Hier finden Sie eine Schritt-für-Schritt-Anleitung zur Funktionsweise von OAuth 2.0 unter Verwendung des Autorisierungscode-Gewährungsablaufs:

  1. Der Benutzer initiiert die Autorisierung: Ein Benutzer möchte einer Drittanbieteranwendung (dem so genannten Client) Zugriff auf seine Ressourcen gewähren, die auf einem Server gehostet werden. Dies beginnt in der Regel, wenn der Benutzer in der Clientanwendung auf eine Schaltfläche wie "Mit Google anmelden" oder "Mit GitHub verbinden" klickt.
  2. Der Kunde fordert die Autorisierung an: Der Client leitet den Benutzer an den Autorisierungs-Endpunkt des Autorisierungsservers weiter. Die Anfrage enthält Parameter wie: client_id, redirect_uri, response_type=code, scope und state (für den CSRF-Schutz). Der Benutzer wird dann möglicherweise aufgefordert, sich zu authentifizieren (falls er noch nicht angemeldet ist) und den angeforderten Zugriff zu genehmigen oder abzulehnen.
  3. Die Autorisierung wird erteilt: Wenn der Benutzer die Aufforderung genehmigt, leitet der Autorisierungsserver den Browser des Benutzers zurück auf den Browser des Clients redirect_uri. Die URL enthält zusammen mit dem state Parameter einen Autorisierungscode, den der Client überprüfen sollte, um sicherzustellen, dass die Anforderung nicht manipuliert oder abgefangen wurde.
  4. Der Client fordert ein Zugriffstoken an: Der Client sendet eine Anforderung an den Token-Endpunkt, um den Autorisierungscode gegen Token auszutauschen. Diese Anforderung muss Folgendes enthalten: authorization_code, client_id, client_secret(falls zutreffend), redirect_uri (muss mit der ursprünglichen Anfrage übereinstimmen) und grant_type=authorization_code.
  5. Der Client erhält Zugriffs- und Aktualisierungstoken: Wenn die Anfrage validiert wird, gibt der Autorisierungsserver ein Zugriffstoken zur Authentifizierung von API-Anforderungen und ein Aktualisierungstoken zum Abrufen neuer Zugriffstoken aus, wenn das aktuelle Token abläuft. Der Client speichert diese Token sicher und verwendet das Zugriffstoken in API-Anfragen.
  6. Der Client verwendet das Aktualisierungstoken: Wenn das Zugriffstoken abläuft, kann der Client ein neues anfordern, indem er eine Anfrage für ein Aktualisierungstoken an den Token-Endpunkt sendet. Um ein neues Zugriffstoken zu erhalten, muss der Client eine neue Anfrage an den Token-Endpunkt mit den folgenden Kriterien senden: client_id, client_secret, refresh_token und grant_type=refresh_token.

Vorteile von OAuth

Die Verwendung von OAuth bietet mehrere Vorteile, wie z. B. die Verringerung des Risikos von Anmeldedatendiebstahl, die Verbesserung der Benutzererfahrung und die Ermöglichung von Single Sign-On (SSO).

Reduziert das Risiko von Diebstahl oder Missbrauch von Anmeldeinformationen

OAuth macht es überflüssig, dass Benutzer ihre Anmeldedaten direkt mit Anwendungen von Drittanbietern teilen müssen. Stattdessen verlässt es sich auf einen Autorisierungsserver, um den Zugriff zu verwalten, wodurch das Risiko einer Offenlegung von Anmeldedaten erheblich reduziert wird, insbesondere im Falle einer Datenschutzverletzung. OAuth 2.0 verwendet kurzlebige Zugriffstoken, die für eine bestimmte Zeit eingeschränkten Zugriff auf Ressourcen gewähren. Diese Token können vom Benutzer jederzeit widerrufen werden, um sicherzustellen, dass der Zugriff vorübergehend und unter der Kontrolle des Benutzers bleibt.

Verbessert die Benutzererfahrung

OAuth vereinfacht die Benutzererfahrung, indem es Nutzern ermöglicht, mit ihren vorhandenen Konten auf mehrere Konten und Ressourcen zuzugreifen, sodass keine separaten Benutzernamen und Passwörter für jeden Dienst erstellt werden müssen. Dies beschleunigt den Zugriff und reduziert den Aufwand für die Verwaltung mehrerer Anmeldeinformationen.

Ermöglicht Single Sign-On

OAuth ermöglicht SSO , indem es Benutzern erlaubt, sich einmal bei einem vertrauenswürdigen Dienstanbieter anzumelden und dann mehrere Apps zu verwenden, ohne die Anmeldeinformationen erneut eingeben zu müssen. Solange der Benutzer beim Anbieter angemeldet bleibt, kann er nahtlos andere Apps verwenden, die mit demselben Konto verbunden sind. Beispielsweise kann ein Nutzer, der bei Google angemeldet ist, auch auf Apps zugreifen, die sich bei der Authentifizierung auf Google verlassen.

Nachteile von OAuth

Trotz seiner Vorteile birgt OAuth einige Sicherheitsrisiken, darunter die Möglichkeit, dass Token kompromittiert werden können, wenn sie nicht sicher gespeichert oder übertragen werden, und dass Benutzer immer noch anfällig für Phishing-Angriffe sein können.

Token können kompromittiert werden, wenn sie nicht sicher aufbewahrt werden

Zugriffstoken und Aktualisierungstoken sind wertvolle Ziele für Cyberkriminelle, da sie direkten Zugriff auf Benutzerdaten und -ressourcen bieten. Wenn Token unsachgemäß gespeichert werden, können Bedrohungsakteure sie kompromittieren, was möglicherweise zu unbefugtem Zugriff und kompromittierten Konten führt.

Token können kompromittiert werden, wenn sie nicht sicher übertragen werden

Wenn Token über eine ungesicherte Verbindung gesendet werden, z. B. über HTTP anstelle von HTTPS, können sie durch einen Man-in-the-Middle-Angriff (MITM) abgefangen werden. Nach der Kompromittierung kann ein Token verwendet werden, um unbefugten Zugriff auf die Ressourcen eines Benutzers zu erhalten.

Anfällig für Phishing-Angriffe

OAuth verlässt sich darauf, Benutzer zu einem Autorisierungsserver umzuleiten, um Berechtigungen zu erteilen, aber dieser Prozess kann bei Phishing-Angriffen ausgenutzt werden. Bei einem Phishing-Angriff verleitet ein Angreifer Benutzer dazu, Anmeldeinformationen auf einer gefälschten Anmeldeseite einzugeben, die sich als legitimer Autorisierungsserver ausgibt. Wenn Benutzer den Unterschied nicht bemerken, geben sie möglicherweise unwissentlich ihre Anmeldedaten ein und geben Angreifern Zugriff auf Konten und sensible Daten.

Jetzt kaufen