Einführung zu OAuth (in verständlicher Sprache)

Wir haben bereits über die Weitergabe Ihrer Passwörter gesprochen, und dass das etwas ist, dass unter keinen Umständen zulässig ist. Wenn eine Website die Dienste einer anderen Website verwenden will – wie wenn etwa Bitly auf Ihrem Twitter-Stream posten möchte – sollte man nicht sein Passwort weitergeben, sondern stattdessen OAuth benutzen.

OAuth ist ein Authentifizierungsprotokoll mit dem Sie erlauben, dass eine Anwendung mit einer anderen interagiert, ohne dafür Ihr Passwort weitergeben zu müssen.

Hier ist eine Schnellanleitung, um die Funktionsweise von OAuth möglichst einfach darzustellen.

Die Akteure

Bei der OAuth-Transaktion sind drei wesentliche Spieler beteiligt: der Benutzer, der Verbraucher und der Serviceanbieter. Dieses Dreigestirn wird liebevoll als OAuth-Dreiecksbeziehung bezeichnet.

In unserem Beispiel ist Joe der Benutzer, Bitly der Verbraucher und Twitter der Serviceanbieter, der Joes sichere Ressource kontrolliert (seinen Twitter-Stream). Joe möchte, dass Bitly abgekürzte Links auf seinem Stream posten kann. Und so geht´s:

Schritt 1 – Der Benutzer zeigt seine Absicht

Joe (Benutzer): „Hey Bitly, ich möchte, dass du Links direkt auf meinem Twitter-Stream posten kannst.“

Bitly (Verbraucher): „Großartig! Lass mich kurz nach der Berechtigung fragen.“

Schritt 2 – Der Benutzer bekommt die Berechtigung

Bitly: „Ich habe einen Benutzer, der möchte, dass ich direkt auf seinen Stream poste. Kann ich einen Anfrage-Token bekommen?“

Twitter (Serviceanbieter): „Aber sicher. Hier sind ein Token und ein Geheimnis.“

Das Geheimnis wird verwendet, um eine Fälschung zu vermeiden.  Der Verbraucher verwendet dieses Geheimnis zur Unterzeichnung einer Anfrage. So kann der Serviceanbieter verifizieren, dass die Anfrage tatsächlich von der betreffenden Anwendung kommt.

Schritt 3 – Der Benutzer wird an den Serviceanbieter weitergeleitet

Bitly: „Okay Joe. Ich leite dich weiter an Twitter, damit zu deine Genehmigung geben kannst. Nimm diesen Token mit.“

Joe: „Okay!“

<Bitly leitet Joe zur Autorisierung an Twitter weiter>

Hinweis: Das ist der gruselige Teil der Sache.  Wenn Bitly ein dubioses böswillig agierendes Unternehmen wäre, könnte es ein Fenster öffnen, das nach Twitter aussieht, das aber tatsächlich zum Phishing des Benutzernamens und des Kennworts verwendet wird. Achten Sie immer darauf, dass die URL, an die Sie weitergeleitet werden, tatsächlich die Ihres Serviceanbieters ist (in diesem Fall Twitter).

Schritt 4 – Der Benutzer erteilt die Berechtigung

Joe: „Twitter, ich möchte, dass du diesen Anfragen-Token genehmigst, den Bitly mir gegeben hat.“

Twitter: „Okay. Aber nur um sicherzugehen, du möchtest, dass Bitly X, Y und Z mit deinem Twitter-Konto macht?“

Joe: „Ja!“

Twitter: „Okay, du kannst jetzt zurück zu Bitly und mitteilen, dass die Berechtigung für den Anfrage-Token gewährt wurde.“

Twitter markiert den Anfragen-Token als „zugelassen“, sodass dieser bei Zugriffsanfragen durch den Verbraucher akzeptiert wird (solange er mit dem gemeinsamen Geheimnis unterzeichnet wird).

Schritt 5 – Der Verbraucher bekommt einen Zugriffs-Token

Bitly: „Twitter, kann ich diesen Token gegen einen anderen Zugriffs-Token austauschen?“

Twitter: „Aber sicher. Hier ist dein Zugriffs-Token und dein Geheimnis.“

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

Bitly: „Ich möchte diesen Link auf den Stream von Joe posten.  Hier ist mein Zugriffs-Token!“

Twitter: „Erledigt!“

Zur Wiederholung

In unserem Fall war es zu keinem Zeitpunkt nötig Twitter-Zugangsdaten an Bitly weiterzugeben. Joe hat lediglich den Zugriff mithilfe von OAuth über eine sichere Methode delegiert. Joe kann sich jederzeit bei Twitter anmelden, den gewährten Zugriff überprüfen und Tokens für bestimmte Anwendungen aufheben, ohne andere Tokens zu beeinflussen. OAuth ermöglicht auch granulare Berechtigungsebenen. Sie können Bitly das Recht geben, auf Ihrem Twitter-Konto zu posten, aber LinkedIn auf einen ausschließlichen Lese-Zugriff beschränken.

OAuth ist nicht perfekt… noch nicht!

OAuth ist eine solide Lösung für browserbasierte Anwendungen und eine enorme Verbesserung im Vergleich zur HTTP-Basisauthentifizierung. Es gibt allerdings Einschränkungen, insbesondere mit OAuth 1.0, die es deutlich weniger sicher und benutzerfreundlich machen als in nativen und mobilen Anwendungen.

OAuth 2.0 ist eine neuere und sicherere Version des Protokolls, das verschiedene „Abläufe“ für Web-, Mobil- und Desktop-Anwendungen einführt. Es führt auch das Konzept des Token-Verfalls (ähnlich wie der Cookie-Verfall) ein, erfordert SSL und reduziert die Komplexität für Entwickler, weil keine Unterzeichnung mehr erforderlich ist.

Andere Ressourcen

Wir haben hoffentlich den richtigen Weg gewählt, um Sie mit OAuth vertraut zu machen. Wenn Sie in Zukunft eine „Sign-in mit Twitter“ oder eine ähnliche delegierte Identitätsüberprüfung sehen, verstehen Sie besser, was im Hintegrund eigentlich abläuft.

Wenn Sie mehr zur Mechanik von OAuth wissen wollen, finden Sie nachstehend einige nützliche Links: