Was ist OAuth?

OAuth, ausgeschrieben Open Authorization, ist ein offener Standard für die delegierte Autorisierung. Er erlaubt es einer Anwendung, im Auftrag eines Nutzers auf Daten eines anderen Dienstes zuzugreifen, ohne dass dabei das Passwort des Nutzers weitergegeben werden muss. Statt Zugangsdaten zu teilen, wird ein zeitlich befristetes Zugriffstoken ausgestellt, das den Umfang des erlaubten Zugriffs genau festlegt. Auf diese Weise lassen sich Verknüpfungen zwischen Diensten herstellen, die sicher, nachvollziehbar und jederzeit widerrufbar sind.

Funktionsweise im Überblick

Im klassischen Ablauf möchte eine Anwendung, im OAuth-Sprachgebrauch der Client, auf geschützte Ressourcen bei einem anderen Dienst zugreifen. Sie leitet den Nutzer dazu an den Autorisierungsserver weiter, bei dem dieser sich anmeldet und der Anwendung den gewünschten Zugriff bestätigt. Der Autorisierungsserver stellt der Anwendung daraufhin ein Token aus, mit dem sie an der eigentlichen Schnittstelle des Ressourcenservers die freigegebenen Daten abrufen kann. Der Nutzer behält die Kontrolle, weil er den Zugriff jederzeit zurückziehen kann und das Passwort niemals den Autorisierungsserver verlässt.

Die Flows von OAuth 2.0

OAuth 2.0 unterscheidet mehrere Abläufe, die für unterschiedliche Einsatzzwecke gedacht sind. Für serverseitige Webanwendungen ist der Authorization Code Flow der Regelfall, weil dort vertrauliche Schlüssel sicher hinterlegt werden können. Mobile Apps und Single-Page-Anwendungen erweitern diesen Ablauf um den PKCE-Schutz, der einen zusätzlichen kryptografischen Nachweis verlangt und so das Abfangen von Codes verhindert. Wenn keine Person beteiligt ist und ein Dienst direkt mit einem anderen Dienst kommuniziert, kommt der Client-Credentials-Flow zum Einsatz, etwa bei der Verständigung von Backend-Diensten untereinander. Der ältere Implicit Flow gilt heute als überholt und wird nicht mehr empfohlen.

OAuth in der Praxis

Im Alltag begegnet OAuth den meisten Personen vor allem in Form der Anmeldung mit bestehenden Konten, etwa über Google, GitHub oder Microsoft. Auch wenn eine Anwendung Zugriff auf den Kalender, auf Repositories oder auf Cloud-Speicher erhalten soll, läuft dies in aller Regel über OAuth. In Microservice-Landschaften nutzen interne Dienste den Standard, um sich gegenüber APIs zu autorisieren, ohne langlebige Geheimnisse fest verdrahten zu müssen. Drittanbieter-Integrationen, wie sie etwa CRM- oder Marketing-Plattformen anbieten, basieren ebenfalls fast immer auf OAuth.

Verwandte Standards

OAuth bildet die Grundlage für eine Reihe ergänzender Spezifikationen, von denen drei besonders häufig auftauchen:

  • OpenID Connect ergänzt OAuth um eine Authentifizierungsschicht und beantwortet die Frage, wer der angemeldete Nutzer ist
  • JSON Web Tokens werden vielfach als Format für die ausgestellten Tokens verwendet und enthalten Informationen in signierter Form
  • Scopes legen fest, welche konkreten Berechtigungen ein Token umfasst, etwa nur Lesezugriff auf das Profil oder zusätzlich auf E-Mails

Bedeutung für Web-Projekte

Für Web-Projekte ist OAuth heute ein praktisch unverzichtbarer Baustein, sobald externe Dienste eingebunden werden oder eine Anmeldung über bestehende Konten angeboten werden soll. Der Standard reduziert das Risiko, das mit der Verwaltung fremder Passwörter verbunden wäre, und macht Integrationen zwischen Systemen sicherer und transparenter. Gleichzeitig erlaubt er es, Zugriffsrechte fein zu granulieren und im Bedarfsfall gezielt wieder zu entziehen, was sowohl aus Sicherheitssicht als auch aus Sicht des Datenschutzes ein deutlicher Gewinn ist.

DSGVO-Website-Audit Schriftzug neben einem Mann

❮   Zurück