Was ist OAuth? Definition und Funktionsweise

Wir haben über die Weitergabe von Passwörtern gesprochen und darüber, dass Sie das niemals tun sollten. Wenn eine Website die Dienste einer anderen nutzen möchte – z. B. Bitly, um Ihren Twitter-Stream zu posten -, sollte sie stattdessen ein Protokoll namens OAuth verwenden, anstatt Sie zu bitten, Ihr Passwort preiszugeben.

Es ist wichtig zu verstehen, wie ein Programm, eine Website oder eine App Sie als Benutzer authentifizieren kann – haben sie die richtigen Berechtigungen? Haben Sie ihnen eine Möglichkeit eingeräumt, zu überprüfen, wer Sie sind – und in Ihrem Namen auf Daten zuzugreifen? OAuth hilft bei der Rationalisierung dieses Prozesses: Aber auch bei der Automatisierung sollten Sie sich immer bewusst sein, wie eine Person oder ein Unternehmen Ihre Daten verwendet (oder speichert).

Was ist OAuth?

OAuth ist ein offenes Standard-Autorisierungsprotokoll oder -Rahmenwerk, das Anwendungen die Möglichkeit eines „sicheren designierten Zugriffs“ bietet. Du kannst Facebook zum Beispiel mitteilen, dass ESPN.com auf dein Profil zugreifen oder Aktualisierungen in deiner Timeline veröffentlichen darf, ohne dass du ESPN dein Facebook-Passwort mitteilen musst. Dies minimiert das Risiko auf eine wichtige Weise: Sollte ESPN eine Sicherheitslücke erleiden, bleibt Ihr Facebook-Passwort sicher.

OAuth gibt keine Passwortdaten weiter, sondern verwendet stattdessen Autorisierungs-Token, um eine Identität zwischen Verbrauchern und Dienstanbietern nachzuweisen. OAuth ist ein Authentifizierungsprotokoll, das es Ihnen ermöglicht, eine Anwendung zu genehmigen, die in Ihrem Namen mit einer anderen interagiert, ohne Ihr Passwort preiszugeben.

SAML vs. OAuth

SAML (Security Assertion Markup Language) ist ein alternativer Standard für die föderierte Authentifizierung, den viele Unternehmen für Single-Sign On (SSO) verwenden. Mit SAML können Unternehmen überwachen, wer Zugriff auf Unternehmensressourcen hat.

Es gibt viele Unterschiede zwischen SAML und OAuth. SAML verwendet XML, um Nachrichten zu übermitteln, während OAuth JSON verwendet. OAuth bietet ein einfacheres mobiles Erlebnis, während SAML auf die Unternehmenssicherheit ausgerichtet ist. Dieser letzte Punkt ist ein wichtiges Unterscheidungsmerkmal: OAuth verwendet in großem Umfang API-Aufrufe, weshalb mobile Anwendungen, moderne Webanwendungen, Spielkonsolen und Geräte des Internets der Dinge (IoT) OAuth als besser geeignet für den Benutzer empfinden. SAML hingegen legt ein Sitzungs-Cookie in einem Browser ab, das einem Benutzer den Zugriff auf bestimmte Webseiten ermöglicht – großartig für kurzlebige Arbeitstage, aber nicht so großartig, wenn man sich jeden Tag bei seinem Thermostat anmelden muss.

OAuth-Beispiele

Das einfachste Beispiel für OAuth in Aktion ist eine Website, die sagt: „Hey, willst du dich mit dem Login einer anderen Website bei unserer Website anmelden?“ In diesem Szenario ist das Einzige, was die erste Website – nennen wir sie den Verbraucher – wissen will, dass der Benutzer auf beiden Websites derselbe Benutzer ist und sich erfolgreich beim Dienstanbieter angemeldet hat – also bei der Website, bei der sich der Benutzer ursprünglich angemeldet hat, nicht beim Verbraucher.

Facebook-Apps sind ein gutes Beispiel für einen OAuth-Anwendungsfall. Angenommen, Sie verwenden eine App auf Facebook und werden aufgefordert, Ihr Profil und Ihre Bilder freizugeben. Facebook ist in diesem Fall der Dienstanbieter: Es hat Ihre Anmeldedaten und Ihre Bilder. Die App ist der Verbraucher, und als Benutzer möchten Sie die App nutzen, um etwas mit Ihren Bildern zu tun. Sie haben dieser App ausdrücklich Zugang zu Ihren Bildern gewährt, die OAuth im Hintergrund verwaltet.

Ihre Smart Home-Geräte – Toaster, Thermostat, Sicherheitssystem usw. – verwenden wahrscheinlich irgendeine Art von Anmeldedaten, um sich miteinander zu synchronisieren und es Ihnen zu ermöglichen, sie über einen Browser oder ein Client-Gerät zu verwalten. Diese Geräte verwenden das, was OAuth als vertrauliche Autorisierung bezeichnet. Das bedeutet, dass sie die geheimen Schlüsselinformationen aufbewahren, damit Sie sich nicht immer wieder neu anmelden müssen.

OAuth erklärt

Bei OAuth geht es um Autorisierung und nicht um Authentifizierung. Autorisierung bedeutet, dass man um Erlaubnis bittet, etwas zu tun. Bei der Authentifizierung geht es darum, zu beweisen, dass man die richtige Person ist, weil man etwas weiß. OAuth überträgt keine Authentifizierungsdaten zwischen Verbrauchern und Dienstanbietern, sondern fungiert stattdessen als eine Art Autorisierungs-Token.

Die übliche Analogie, die ich bei meinen Recherchen zu OAuth gesehen habe, ist der Parkschlüssel für Ihr Auto. Der Schlüssel erlaubt es dem Diener, das Auto zu starten und zu bewegen, aber er hat keinen Zugriff auf den Kofferraum oder das Handschuhfach.


Ein OAuth-Token ist wie der Schlüssel des Dieners. Als Benutzer können Sie den Verbrauchern sagen, was sie von jedem Dienstanbieter nutzen können und was nicht. Sie können jedem Verbraucher einen anderen Valet-Schlüssel geben. Sie haben niemals den vollständigen Schlüssel oder die privaten Daten, die ihnen den Zugriff auf den vollständigen Schlüssel ermöglichen.

Wie OAuth funktioniert

Es gibt drei Hauptakteure in einer OAuth-Transaktion: den Benutzer, den Verbraucher und den Dienstanbieter. Dieses Dreigestirn wird liebevoll als OAuth-Liebesdreieck bezeichnet.

In unserem Beispiel ist Joe der Benutzer, Bitly ist der Verbraucher und Twitter ist der Dienstanbieter, der Joes sichere Ressource (seinen Twitter-Stream) kontrolliert. Joe möchte, dass Bitly in der Lage ist, verkürzte Links in seinem Stream zu posten. So funktioniert es:

Schritt 1 – Der Benutzer zeigt seine Absicht

  • Joe (Benutzer): „Hey, Bitly, ich möchte, dass du Links direkt in meinen Twitter-Stream posten kannst.“
  • Bitly (Verbraucher): „Großartig! Lass mich um Erlaubnis bitten.“

Schritt 2 – Der Verbraucher erhält die Erlaubnis

  • Bitly: „Ich habe einen Benutzer, der möchte, dass ich in seinem Stream poste. Kann ich ein Anfrage-Token bekommen?“
  • Twitter (Dienstanbieter): „Sicher. Hier ist ein Token und ein Geheimnis.“

Das Geheimnis wird verwendet, um Anfragefälschungen zu verhindern. Der Verbraucher verwendet das Geheimnis, um jede Anfrage zu signieren, so dass der Dienstanbieter überprüfen kann, ob sie tatsächlich von der Verbraucheranwendung stammt.

Schritt 3 – Der Benutzer wird an den Dienstanbieter weitergeleitet

  • Bitly: „OK, Joe. Ich schicke dich jetzt zu Twitter, damit du zustimmen kannst. Nimm diesen Token mit.“
  • Joe: „OK!“

<Bitly leitet Joe zur Autorisierung an Twitter weiter>

Das ist der gruselige Teil. Wenn Bitly ein superdunkler Bösewicht wäre, könnte es ein Fenster öffnen, das wie Twitter aussieht, aber in Wirklichkeit Ihren Benutzernamen und Ihr Passwort abfragt. Vergewissern Sie sich immer, dass es sich bei der URL, zu der Sie geleitet werden, tatsächlich um den Dienstanbieter (in diesem Fall Twitter) handelt.

Schritt 4 – Der Benutzer erteilt die Erlaubnis

  • Joe: „Twitter, ich möchte dieses Anfrage-Token autorisieren, das mir Bitly gegeben hat.“
  • Twitter: „OK, nur um sicherzugehen, möchten Sie Bitly autorisieren, X, Y und Z mit Ihrem Twitter-Konto zu tun?“
  • Joe: „Ja!“
  • Twitter: „OK, Sie können zurück zu Bitly gehen und ihnen sagen, dass sie die Erlaubnis haben, ihr Anfrage-Token zu verwenden.“

Twitter markiert das Anfrage-Token als „startklar“, so dass es akzeptiert wird, wenn der Verbraucher Zugriff anfordert (solange es mit ihrem gemeinsamen Geheimnis signiert ist).

Schritt 5 – Der Verbraucher erhält ein Zugriffstoken

  • Bitly: „Twitter, kann ich dieses Anfrage-Token gegen ein Zugriffs-Token austauschen?“
  • Twitter: „Sicher. Hier ist Ihr Zugriffstoken und Ihr Geheimnis.“

Schritt 6 – Der Verbraucher greift auf die geschützte Ressource zu

  • Bitly: „Ich würde gerne diesen Link zu Joes Stream posten. Hier ist mein Zugriffstoken!“
  • Twitter: „Done!“

In unserem Szenario musste Joe seine Twitter-Zugangsdaten nie an Bitly weitergeben. Er hat einfach den Zugriff mit OAuth auf sichere Weise delegiert. Joe kann sich jederzeit bei Twitter anmelden und den von ihm gewährten Zugriff überprüfen und Token für bestimmte Anwendungen widerrufen, ohne dass andere davon betroffen sind. OAuth ermöglicht auch granulare Berechtigungsstufen. Sie können Bitly das Recht geben, in Ihrem Twitter-Konto zu posten, aber LinkedIn nur Lesezugriff gewähren.

OAuth 1.0 vs. OAuth 2.0

OAuth 2.0 ist eine komplette Neuentwicklung von OAuth 1.0, und die beiden sind nicht kompatibel. Wenn Sie heute eine neue Anwendung erstellen, verwenden Sie OAuth 2.0. Dieser Blog gilt nur für OAuth 2.0, da OAuth 1.0 veraltet ist.

OAuth 2.0 ist schneller und einfacher zu implementieren. OAuth 1.0 verwendete komplizierte kryptografische Anforderungen, unterstützte nur drei Flows und war nicht skalierbar.

OAuth 2.0 hingegen verfügt über sechs Flows für verschiedene Arten von Anwendungen und Anforderungen und ermöglicht signierte Geheimnisse über HTTPS. OAuth-Tokens müssen in 2.0 nicht mehr an den Endpunkten verschlüsselt werden, da sie während der Übertragung verschlüsselt werden.

Weitere Ressourcen

Hoffentlich war dies eine gute Einführung, um Sie mit OAuth vertraut zu machen, so dass Sie das nächste Mal, wenn Sie „Sign-in with Twitter“ oder eine ähnliche delegierte Identitätsüberprüfung sehen, eine gute Vorstellung davon haben, was vor sich geht.

Wenn Sie tiefer in die Mechanismen von OAuth eintauchen wollen, finden Sie hier einige hilfreiche Links:

  • http://marktrapp.com/blog/2009/09/17/oauth-dummies
  • https://dev.twitter.com/docs/auth/oauth/faq
  • http://stackoverflow.com/questions/4113934/how-is-oauth-2-different-from-oauth-1
  • http://googlecodesamples.com/oauth_playground/

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.