Autorisierung ohne Registrierung - Teil 1

Sicherer Zugriff auf Web-APIs durch das OAuth-Protokoll
Kommentare

Soll eine Anwendung die Dienste eines Web-APIs nutzen, muss sie die zugehörige Benutzername-Passwort-Kombination kennen – oder das Web-API muss OAuth verwenden und die Benutzer darüber autorisieren.

Entwickler Magazin

Der Artikel „Sicherer Zugriff auf Web-APIs durch das OAuth-Protokoll“ von Carsten Eilers ist erstmalig erschienen im Entwickler Magazin 6.2011.

Eine in Zeiten des Web 2.0 häufige Ausgangssituation: Eine Anwendung, egal ob in Form einer Web- oder Desktopanwendung, soll auf die durch ein Passwort geschützten Daten eines Benutzers auf einem Server zugreifen oder dort in seinem Namen Funktionen aufrufen.

Die dafür übliche Lösung: Der Benutzer gibt der Anwendung seinen Benutzernamen für den Server und das zugehörige Passwort und die Anwendung greift damit auf die Daten oder Funktionen zu.

Aus Sicherheitssicht ist das keine gute Lösung. Der Benutzer muss der Anwendung seine Zugangsdaten für den Server anvertrauen. Warum sollte er das tun? Vor allem, wenn die Anwendung von einem anderen Anbieter als der Server stammt.

Auch für die Anwendung ist diese Speicherung fremder Zugangsdaten keine besonders erstrebenswerte Situation. Schließlich müssen diese Zugangsdaten sorgsam verwahrt werden. Werden sie auf Seiten der Anwendung ausgespäht, ist der Ärger groß.

Artikelserie

Teil 1: Sicherer Zugriff auf Web-APIs durch das OAuth-Protokoll
Teil 2: Verwendung des OAuth-Protokolls

Das Beispiel Twitter

Ein ausgezeichnetes Beispiel für dieses Problem kennen Sie: Twitter, bzw. die vielen Anwendungen, die Twitter für ihre eigenen Zwecke verwenden. Damit z. B. ein neuer Blog-Eintrag über Twitter angekündigt werden kann, muss die Blog-Software den Twitter-Benutzernamen und das Twitter-Passwort des Bloggers kennen.

Dieses Problem war natürlich auch Twitter bekannt, und daher hat man darauf reagiert. Die Lösung des Problems heißt [1] OAuth und wird von Twitter seit einiger Zeit für Drittanwendungen als einzige Möglichkeit der Autorisierung akzeptiert. OAuth erlaubt es, ein API zu nutzen, ohne die zugehörigen Zugangsdaten kennen zu müssen.

OAuth im Überblick

OAuth unterscheidet zwischen drei Parteien: Dem Benutzer (genannt „Resource Owner“), dem Client und dem Server. Der Client ist die Anwendung, die auf die Daten oder Funktionen (genannt „Protected Resource“) des Benutzers auf dem Server zugreifen möchte. Dafür benötigt er eine Vollmacht, die ihm der Benutzer erteilen muss. Ohne auf die Einzelheiten einzugehen, besteht das Protokoll extrem vereinfacht aus drei Schritten (Abb. 1):

Abb. 1: OAuth im Überblick
  1. Der Client authentifiziert sich gegenüber dem Server und bittet um die Autorisierung, auf die Daten des Benutzers zugreifen oder Funktionen in seinem Namen nutzen zu dürfen. Der Client erhält vom Server ein Vollmacht-Formular, dass der Benutzer unterschreiben muss, um diese Aktionen zu erlauben.
  2. Der Client schickt das Vollmacht-Formular an den Benutzer, der es seinerseits zum Server schickt. Der Server informiert den Benutzer über die gespeicherte Identität des Clients und über die Folgen, die die gewünschten Aktionen haben. Ist der Benutzer damit einverstanden, authentifiziert er sich gegenüber dem Server und unterschreibt damit das Vollmacht-Formular. Das vollständige Vollmacht-Formular wird vom Benutzer dann wieder an den Client geschickt.
  3. Der Client bittet den Server, das vollständige Vollmacht-Formular gegen eine ausgestellte Vollmacht auszutauschen. Mit dieser Vollmacht kann der Client dann auf die Daten oder Funktionen zugreifen.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -