Was ist OAuth?

OAuth ist ein Protokoll zum Austausch von Autorisierungsinformationen, das mehreren Onlinediensten ermöglicht, mit Zustimmung des Benutzers miteinander zu interagieren. „OAuth 1.0“ wurde im April 2010 als RFC 5849 veröffentlicht, gefolgt von „OAuth 2.0“ im Oktober 2012 als RFC 6749.

Stellen Sie sich vor, Sie möchten ein Foto auf Instagram posten und es automatisch auf Twitter teilen. Beide Dienste manuell aufzurufen, um denselben Beitrag zu veröffentlichen, kann mühsam sein. Stattdessen bietet Instagram eine Funktion namens Crossposting an, mit der Sie Ihre Instagram-Beiträge über die APIs der jeweiligen Plattformen automatisch in anderen sozialen Netzwerken wie Twitter teilen können. Dieser Vorgang wird durch OAuth ermöglicht.

Um auf Twitter zu posten, ist für die übliche Authentifizierung eine Benutzer-ID und ein Passwort erforderlich. Dies wird als Basic Authentication bezeichnet. Die Weitergabe dieser sensiblen Anmeldedaten an einen anderen Dienst ist jedoch riskant. OAuth löst dieses Problem, indem Autorisierungsinformationen statt Anmeldedaten ausgetauscht und nur die für die Aufgabe erforderlichen Berechtigungen erteilt werden.

In der OAuth-Terminologie:

  • Der Dienst, der die Autorisierung erhält (z. B. Instagram), wird als OAuth-Client bezeichnet.
  • Der Dienst, der die Autorisierung erteilt (z. B. Twitter), wird als OAuth-Server bezeichnet.
  • Der Benutzer wird als Ressourceninhaber bezeichnet.

Um den Prozess einzuleiten, muss sich der OAuth-Client zunächst beim OAuth-Server registrieren und dabei Angaben wie den Namen und die Domain seiner Anwendung machen. Wenn der OAuth-Server den Client als vertrauenswürdig einstuft, weist er ihm eine Client-ID zu.

Wenn der Benutzer (Ressourceneigentümer) seine Zustimmung erteilt, leitet der OAuth-Client ihn zum OAuth-Server weiter. Der OAuth-Server authentifiziert den Benutzer und fragt, ob dem OAuth-Client die angegebenen Berechtigungen erteilt werden sollen. Nach der Zustimmung des Benutzers leitet der Server ihn zurück zum OAuth-Client und stellt dabei ein Zugriffstoken aus. Dieses Token dient als Autorisierungsnachweis und ermöglicht dem OAuth-Client den Zugriff auf die API des OAuth-Servers. Das Token bleibt gültig, bis es abläuft oder ausdrücklich widerrufen wird.