von Rob Sobers
Neulich haben wir darüber gesprochen, dass Sie Passwörter niemals weitergeben sollten. Wenn eine Website die Dienste einer anderen verwenden möchte – also zum Beispiel Bitly in Ihrem Twitter-Stream postet –, sollte sie OAuth verwenden, anstatt Sie nach Ihrem Passwort zu fragen.
Bei OAuth handelt es sich um ein Authentifizierungsprotokoll, mit dessen Hilfe Sie die Interaktion zwischen zwei Anwendungen erlauben können, ohne Ihre Zugangsdaten preiszugeben.
Hier möchte ich die Funktionsweise von OAuth kurz und in einfachen Worten erklären.
In einer OAuth-Transaktion gibt es drei Hauptbeteiligte: den Nutzer (User), die Anwendung (Consumer) und die Website, auf die der Zugriff erlaubt werden soll (Service Provider). Dieses Triumvirat wird auch liebevoll als „OAuth Love Triangle“ bezeichnet.
In unserem Beispiel ist Joe der User, Bitly der Consumer und Twitter der Service Provider, auf dem sich die sichere Ressource von Joe befindet (sein Twitter-Stream). Joe möchte Bitly erlauben, gekürzte Links in seinem Twitter-Stream zu posten. Und so funktioniert’s:
Schritt 1: Der User äußert seine Absicht
Joe (User): „Hey Bitly, ich möchte, dass du Links direkt in meinen Twitter-Stream posten kannst.“
Bitly (Consumer): „Großartig! Ich bitte gleich um die Genehmigung.“
Schritt 2: Der Consumer erhält die Genehmigung
Bitly: „Ein User möchte, dass ich direkt in seinen Stream poste. Kann ich einen Abfrage-Token haben?“
Twitter (Service Provider): „Natürlich. Hier sind ein Token und ein Geheimnis.“
Das Geheimnis wird benötigt, um gefälschte Abfragen zu verhindern. Der Consumer verwendet das Geheimnis, um jede Abfrage zu signieren. So kann der Service Provider überprüfen, ob die jeweilige Abfrage auch wirklich von der Consumer-Anwendung kommt.
Schritt 3: Der User wird zum Service Provider weitergeleitet
Bitly: „OK, Joe. Ich leite dich jetzt an Twitter weiter, damit du die Aktion bestätigen kannst. Nimm diesen Token mit.“
Joe: „OK!“
<Bitly leitet Joe zur Autorisierung an Twitter weiter.>
Anmerkung: Dieser Teil ist ein bisschen unheimlich. Wäre Bitly ein unseriöser Anbieter mit bösen Absichten, könnte er ein Popup-Fenster verwenden, das zwar genau wie Twitter aussieht, aber eigentlich eine Phishing-Seite ist, mit dem er Ihre Zugangsdaten in Erfahrung bringen kann. Stellen Sie stets sicher, dass es sich bei der URL, an die Sie weitergeleitet werden, wirklich um den Service Provider handelt (in diesem Fall Twitter).
Schritt 4: Der User gibt seine Erlaubnis
Joe: „Twitter, ich möchte diesen Abfrage-Token autorisieren, den Bitly mir gegeben hat.“
Twitter: „OK. Nur zur Sicherheit: Du möchtest Bitly die Erlaubnis dazu geben, X, Y und Z auf deinem Twitter-Konto auszuführen?“
Joe: „Ja!“
Twitter: „OK. Du kannst zu Bitly zurückkehren und ihm sagen, dass er seinen Abfrage-Token jetzt verwenden kann.“
Twitter kennzeichnet den Abfrage-Token als freigegeben. Wenn der Consumer nun um Zugriff bittet, wird ihm dieser gewährt (solange die Abfrage mit dem gemeinsamen Geheimnis signiert ist).
Schritt 5: Der Consumer erhält einen Zugangs-Token
Bitly: „Twitter, kann ich diesen Abfrage-Token gegen einen Zugangs-Token tauschen?“
Twitter: „Sicher. Hier sind der Zugangs-Token und das Geheimnis.“
Schritt 6: Der Consumer greift auf die geschützte Ressource zu
Bitly: „Ich möchte diesen Link in Joes Stream posten. Hier ist mein Zugangs-Token!“
Twitter: „Erledigt!“
In unserem Beispiel musste Joe seine Twitter-Zugangsdaten gegenüber Bitly nie preisgeben. Er delegierte den Zugang einfach auf sichere Weise über OAuth. Joe kann sich jederzeit bei Twitter anmelden, die von ihm erteilten Zugangsrechte überprüfen und Tokens für bestimmte Anwendungen aufheben, ohne dadurch andere zu beeinträchtigen. OAuth ermöglicht zudem granulare Berechtigungsstufen. So können Sie beispielsweise Bitly die Berechtigung erteilen, auf Ihrem Twitter-Konto zu posten, den Zugriff auf LinkedIn jedoch auf „Nur lesen“ beschränken.
OAuth ist eine robuste Lösung für browserbasierte Anwendungen und eine enorme Verbesserung gegenüber der HTTP Basic Authentication. Insbesondere bei OAuth 1.0 gibt es jedoch gewisse Einschränkungen, die dazu führen, dass das Protokoll bei nativen und mobilen Anwendungen weitaus unsicherer und weniger benutzerfreundlich ist.
OAuth 2.0 ist eine neuere, sicherere Version, bei der unterschiedliche „Flows“ für Web-, Desktop- und mobile Anwendungen eingeführt werden. Tokens verfügen nur über eine bestimmte Gültigkeitsdauer (ähnlich wie beim Ablauf von Cookies), die Verwendung von SSL ist erforderlich und die Prozesse für Entwickler wurden vereinfacht, da keine Signaturen mehr nötig sind.
Weitere Ressourcen
Ich hoffe, dass Ihnen diese Einführung in OAuth weitergeholfen hat. Wenn Ihnen das nächste Mal die Aufforderung „Bei Twitter anmelden“ oder ähnliche delegierte Identitätsüberprüfungen begegnen, wissen Sie bereits, was hier passiert.
Wenn Sie sich noch genauer über die Funktionsweise von OAuth informieren möchten, empfehle ich Ihnen die folgenden Links:
The post Einführung in OAuth (ohne Fachchinesisch) appeared first on Varonis Deutsch.