OAuth
Was ist OAuth?
„OAuth, kurz für ‚Open Authorization‘ (offene Autorisierung), ist ein offenes Protokoll, das häufig verwendet wird, um Websites oder Apps Zugriff auf Benutzerinformationen zu gewähren, die auf anderen Websites gespeichert sind – und das, ohne Passwörter weitergeben zu müssen. Mit OAuth kann eine Person selektiv und sicher zulassen, dass zwei Websites direkt miteinander interagieren, mit dem Ziel, eine bestimmte Aufgabe zu erleichtern. OAuth gewährt Berechtigung oder Autorisierung zum Zugriff auf Daten, was sich von der Authentifizierung einer Identität unterscheidet (wie beispielsweise beim Anmelden eines Nutzers bei einem Dienst).
OAuth kann in Situationen verwendet werden, die einen Webbrowser, eine mobile App oder ein Internet der Dinge (IoT) Gerät betreffen, und ist darauf ausgelegt, Aufgaben wie das Verschieben von Dateien, das Finden von Freunden auf einer Social-Media-Seite oder das Ändern der Einstellungen eines Heimthermostats zu optimieren. Der Dienst, der die Berechtigung erhält, auf die Daten eines Nutzers zuzugreifen, kann auf eine begrenzte Menge an Daten und verschiedenen Fähigkeiten beschränkt werden (z.B. nur Lesezugriff oder Lese- und Bearbeitungszugriff). OAuth wird manchmal mit der Drittanbieter-Login-Funktion verwechselt, die es einem Nutzer ermöglicht, sich mit Google oder Facebook-Anmeldedaten bei einer Website anzumelden. Der Drittanbieter-Login, genannt “Open ID Connect” (OIDC), ist nur eine spezielle Anwendung von OAuth. Dieser Artikel konzentriert sich auf OAuth, wird aber auch die OIDC-Anwendung der OAuth-Fähigkeiten diskutieren.
Wie sieht OAuth aus?
Hier ist ein Beispiel für OAuth in Aktion. Wenn du ein Konto bei einem Social-Media-Dienst wie LinkedIn erstellst, wird eine der ersten Fragen der Website oder App sein, ob du dein Adressbuch verbinden möchtest, damit LinkedIn dir andere Personen vorschlagen kann, die du deinem Netzwerk hinzufügen könntest. Wenn du erklärst, dass dein Adressbuch in Gmail geführt wird, wird dir LinkedIn ein Portal zur Anmeldung bei Google geben. Wenn du dich bei Google anmeldest und diese Adressbuchverbindung autorisierst, wird LinkedIn dann die E-Mail-Adressen in deinem Adressbuch sammeln und diese Adressen in der LinkedIn-Datenbank registrierter Nutzer suchen. Dies erspart dir die Mühe, nach Verbindungen zu suchen, da deine Informationen direkt aus Gmail importiert werden können.
Diese Autorisierung bleibt bestehen, bis du Google sagst, dass sie widerrufen werden soll, oder bis sie ihr Ablaufdatum erreicht. Wenn du E-Mail-Adressen zu deinem Gmail-Konto hinzufügst und möchtest, dass LinkedIn eine weitere Suche durchführt, musst du LinkedIn nicht erneut autorisieren, um auf das Gmail-Adressbuch zuzugreifen.
Dieses Beispiel verdeutlicht einige Vorteile von OAuth:
- Du kannst diese Dienste verbinden, ohne deine Google-Anmeldedaten mit LinkedIn zu teilen. Dies hält Ihre Zugangsdaten an weniger Orten gespeichert und somit weniger der Gefahr einer Datenverletzung ausgesetzt.
- LinkedIn und Gmail kümmern sich um die Datenfreigabe, mit minimalem Aufwand deinerseits. Du kannst die Berechtigung von LinkedIn jederzeit widerrufen.
- LinkedIn erhält nur Zugriff auf die E-Mail-Adressen in deinem Adressbuch und auf nichts anderes in deinem Adressbuch oder im E-Mail-Konto im Allgemeinen.
- LinkedIn erhält nur Zugriff auf die E-Mail-Adressen in deinem Adressbuch – und auf keine weiteren Inhalte deines Adressbuchs oder deines E-Mail-Kontos insgesamt.
Wie funktioniert OAuth?
An einer OAuth-Datenfreigabe sind mehrere Parteien beteiligt, und es sind mehrere Schritte erforderlich, um sie einzurichten. Einige dieser Schritte sind sichtbar, während andere im Hintergrund ablaufen (also direkt zwischen den beiden Diensten). Die genauen Schritte können je nach Verwendungszweck von OAuth variieren, aber am Beispiel LinkedIn/Google lässt sich OAuth grob anhand der beteiligten Parteien und der konkreten Einrichtungsschritte erklären.
Die beteiligten Parteien
- Ressourceninhabende: Die Einheit, meist eine Person, die einem Dienst erlauben möchte, auf Daten eines anderen Dienstes zuzugreifen.“
- Client: Die App oder der Dienst, der auf bestimmte Daten zugreifen oder bestimmte Aufgaben für den Dateninhaber ausführen möchte. In unserem Beispiel ist LinkedIn der Client, weil es auf ein Adressbuch zugreifen möchte, das in Gmail gespeichert ist.
- Autorierungsserver: Der Dienst (in diesem Fall Google), der eine Zugriffsanfrage vom Client erhält und die Erlaubnis beim Dateninhaber überprüft. Der Autorisierungsserver bereitet den Zugriffstoken vor (wie ein Schlüssel), den der Client verwenden wird, um auf die angeforderten Daten (E-Mail-Adressen) jetzt und in der Zukunft zuzugreifen.
- Ressourcenserver: Die Einheit, die tatsächlich die Daten (E-Mail-Adressen) hat, zu denen der Dateninhaber dem Client Zugriff gewähren möchte. In einigen Fällen ist dies derselbe wie der Autorisierungsserver, in anderen Fällen kann er unterschiedlich sein (in unserem Beispiel ist der Ressourcenserver Gmail).
Die Schritte zur Einrichtung einer OAuth-Vereinbarung
Im Folgenden wird ein allgemeiner Autorisierungscodeablauf dargestellt, der repräsentiert, was mit OAuth passiert. Beachte, dass es viele andere, leicht unterschiedliche Abläufe gibt, die auch für verschiedene Szenarien erstellt wurden.
- Gehhe auf die LinkedIn-Website und bitte LinkedIn, nach Personen zu suchen, die du möglicherweise kennst.
- (Der Dateninhaber initiiert den OAuth-Prozess, indem er der Client-App mitteilt, dass er etwas mit seinen Daten tun möchte.)
- LinkedIn teilt Google mit, dass du dein Gmail-Adressbuch mit LinkedIn teilen möchtest.
- (Der Client pingt den Autorisierungsserver an und sagt, der Dateninhaber möchte, dass der Client auf bestimmte Daten zugreift.)
- Google verifiziert, dass es sich um LinkedIn handelt und nicht um einen Betrüger, und welche Daten angefordert werden.
- (Die Autorisierungsanforderung enthält den Umfang der Anfrage und welche Daten angefordert werden—E-Mail-Adressen—was der client mit den Daten tun darf—nur herunterladen—und wohin die Autorisierungsanforderung zurückgesendet werden soll—z.B. eine URL wie linkedin.com/callback. Die Autorisierungsanfrage enthält auch einen Code, den sowohl der Autorisierungsserver als auch der Client verwenden, um sich während eines beliebigen Autorisierungsprozesses gegenseitig zu verifizieren.)
- Google gibt einen Token an LinkedIn weiter.
- (Der Autorisierungsserver gibt dem Client einen Anforderungstoken—ein digitales Paket, das eine Wiederholung des Umfangs und ein Geheimnis enthält, das für diese Vereinbarung spezifisch ist.)
- LinkedIn zeigt einen Bildschirm, auf dem du dichh bei Google anmeldest und bestätigen kannst, dass deine E-Mail-Adressen mit LinkedIn teilen möchtest.
- (Der Dateninhaber sieht einen Autorisierungsbildschirm, der ihn auffordert zu bestätigen, dass er dem Client den angegebenen Datenzugriff erlauben möchte. Wenn der Dateninhaber die Anfrage validiert, sendet die Validierung auch den Anforderungstoken zusammen mit dem Umfang und dem Geheimnis zurück, als Beweis dafür, dass während des Validierungsprozesses nichts fehlgeleitet wurde.)
- Google zeichnet auf, dass du LinkedIn die Erlaubnis erteilt hast, E-Mail-Adressen von deinem Gmail-Konto herunterzuladen.
- (Der Autorisierungsserver erhält die Validierung mit dem Anforderungstoken, überprüft, dass alles wie erwartet ist, und markiert in ihren Aufzeichnungen, dass der Dateninhaber die Anfrage bestätigt hat.)
- LinkedIn bestätigt, dass Gmail alles hat, was es braucht, und fordert Zugriff auf die im Adressbuch gespeicherten E-Mail-Adressen an. Gmail antwortet mit einem Schlüssel, den LinkedIn für einen bestimmten Zeitraum verwenden kann, um auf die E-Mail-Adressen zuzugreifen.
- (Der Client kann jetzt den Anforderungstoken formell mit einer Zugriffsanforderung an den Ressourcenserver einreichen. Der Ressourcenserver sieht, dass der Anforderungstoken validiert wurde, und erstellt einen Zugriffstoken für den Client. Der Zugriffstoken enthält Details dazu, auf welche Daten zugegriffen werden kann, welche Berechtigungen bezüglich der Daten erteilt wurden und wie lange der Zugriffstoken gültig ist. Der Token enthält nichts, das den Dateninhaber spezifisch identifiziert, nur welche Daten zugänglich gemacht werden können.)
- Wenn du LinkedIn bittest, eine weitere Suche nach Freunden durchzuführen, kann LinkedIn auf dein Adressbuch zugreifen, ohne alle oben genannten Schritte wiederholen zu müssen.
- (Der Client kann jetzt den Zugriffstoken verwenden, um direkt auf die speziell erlaubten Daten auf dem Ressourcenserver zuzugreifen, ohne dass eine wiederholte Bestätigung durch den Dateninhaber erforderlich ist.)
Wie unterscheidet sich OIDC von OAuth?
OIDC, oder Drittanbieter-Login, ist ein Authentifizierungsprotokoll, das auf dem OAuth-Framework basiert; der Unterschied zwischen den beiden ist nicht immer offensichtlich. OIDC ermöglicht es Ihnen, sich bei einem Dienst wie Spotify mit Zugangsdaten von einem anderen Dienst wie Google anzumelden. Der entscheidende Unterschied besteht darin, dass OIDC Sie authentifiziert, während OAuth die Autorisierung erteilt, Aktionen mit Ihren Daten in Ihrem Namen durchzuführen. Wo ein OAuth-Prozess in einem Zugriffstoken resultiert, das Berechtigungen für den Datenzugriff enthält, resultiert ein OIDC-Prozess in einem Zugriffstoken, gepaart mit einem ID-Token, das den Verifizierungsstatus der Benutzer-Authentifizierung enthält (im Grunde, dass Sie sind, wer Sie vorgeben zu sein), und möglicherweise Infos über den Benutzer, wie Name oder E-Mail.
Wenn der Dienst, den der Benutzer zugreifen möchte (Spotify), das ID-Token vom Authentifizierungsdienst (Google) erhält, wissen sie, dass die Authentifizierung erfolgreich ist. Der OIDC-Prozess gewährt dem zugreifenden Dienst keine Privilegien in Bezug auf die Daten des Benutzers beim Authentifizierungsdienst. Ein weiteres Ergebnis dieser Transaktion ist, dass der Authentifizierungsdienst auch die Authentizität des zugreifenden Dienstes bestätigt.
Sicherheits- und Datenschutzrisiken bei OAuth und OIDC
OAuth und OIDC bieten beide verbesserte Sicherheit. OAuth-Protokolle sorgen dafür, dass keine Zugangsdaten zwischen Diensten geteilt werden müssen und somit weniger der Gefahr von Datenverletzungen ausgesetzt sind; sie geben dem Einzelnen auch eine verfeinerte Kontrolle darüber, wie andere ihre Daten nutzen. Der Vorteil der Verwendung eines Drittanbieter-Logins (OIDC), wenn er verfügbar ist, besteht darin, dass er die Anzahl der Anmeldungen reduziert, die du im Auge behalten musst, was wiederum zu verbesserten Sicherheitsgewohnheiten führen kann (wie die Verwendung von starken, einzigartigen Passwörtern).
Aber wie bei allen Fortschritten in der Sicherheit entwickeln sich auch die Risiken als Reaktion weiter. Beim OAuth-Prozess können Hacker mit gestohlenen Zugangsdaten eine falsche URL in den Prozess einfügen, wodurch Tokens, die für den client bestimmt sind, auf die Websites der Hacker umgeleitet werden. Die Hacker können dann die gehijackten Tokens verwenden, um illegal auf die Daten eines Benutzers zuzugreifen.
Mit OIDC können Hacker eine Person dazu verleiten, eine gefälschte Drittanbieter-Login-Seite zu verwenden, um die ID und das Passwort eines Benutzers zu sammeln. In Bezug auf Datenschutz gibt ein Drittanbieter-Login Google oder Facebook mehr Daten, die über deine Aktivitäten gesammelt werden können, da sie deine Nutzung der Apps und Websites, bei denen du dich anmeldest, überwachen können.