Definition
OAuth 2.0 ist ein offenes Standardprotokoll zur Autorisierung, das es Anwendungen erlaubt, im Namen eines Nutzers auf Ressourcen zuzugreifen, ohne dass das Passwort des Nutzers offengelegt wird. Es definiert einen Mechanismus, bei dem ein Nutzer einem Drittanbieter eingeschränkten Zugriff auf seine Ressourcen auf einem Server gewährt. Dabei erfolgt die Autorisierung über sogenannte Access Tokens, die vom Autorisierungsserver ausgegeben werden.
Das Protokoll trennt die Aufgaben der Authentifizierung und Autorisierung, indem es sich ausschließlich auf die Autorisierung konzentriert. OAuth 2.0 wird häufig in Webanwendungen, mobilen Apps und APIs eingesetzt, um den Zugriff auf geschützte Ressourcen sicher und flexibel zu regeln. Es ist der Nachfolger von OAuth 1.0, das 2010 veröffentlicht wurde.
Was bedeutet das für Ihr Unternehmen?
OAuth 2.0 steckt hinter jeder Freigabe, bei der Sie einer Anwendung erlauben, auf Ihr Google-, Microsoft- oder Buchhaltungskonto zuzugreifen, ohne das Passwort herauszugeben. Bei Anbindungen an Ihre Systeme sollte jede Anwendung nur die Rechte erhalten, die sie tatsächlich braucht, also etwa Kalender lesen statt Vollzugriff auf das Postfach. Ein Blick in die Kontoeinstellungen zeigt, welche Apps aktuell Zugriff haben, und alte Freigaben ehemaliger Werkzeuge lassen sich dort widerrufen.
Geschichte und Standardisierung
OAuth 2.0 wurde 2012 vom Internet Engineering Task Force (IETF) als RFC 6749 standardisiert. Die Entwicklung erfolgte, um die Komplexität und Einschränkungen von OAuth 1.0 zu reduzieren und eine flexiblere Architektur zu schaffen. Das Protokoll wurde von einer Arbeitsgruppe innerhalb des IETF erarbeitet, in der verschiedene Experten aus Industrie und Forschung zusammenarbeiteten.
Die Standardisierung ermöglichte eine breite Akzeptanz und Implementierung in zahlreichen Plattformen und Diensten. Große Anbieter wie Google, Facebook, Microsoft und Twitter unterstützen OAuth 2.0 als Autorisierungsmechanismus. Seit der Veröffentlichung wurden mehrere Erweiterungen und Profile entwickelt, um spezielle Anwendungsfälle wie Single Sign-On oder Geräteautorisierung abzudecken.
Funktionsweise
OAuth 2.0 basiert auf dem Austausch von Tokens zwischen Client, Autorisierungsserver und Ressourcenserver. Ein Client, beispielsweise eine Anwendung, fordert beim Autorisierungsserver ein Access Token an, nachdem der Nutzer seine Zustimmung gegeben hat. Dieses Token berechtigt den Client, auf bestimmte Ressourcen des Nutzers auf dem Ressourcenserver zuzugreifen.
Das Protokoll definiert verschiedene Autorisierungsflüsse (Grant Types), darunter den Autorisierungscodefluss, den impliziten Fluss, den Passwortfluss und den Client-Credentials-Fluss. Der implizite Fluss und der Passwortfluss gelten nach den aktuellen Sicherheitsempfehlungen der IETF als veraltet; für Browser- und Mobile-Anwendungen wird stattdessen der Autorisierungscodefluss mit PKCE empfohlen. Jeder Fluss ist für unterschiedliche Anwendungsszenarien optimiert, etwa Webanwendungen, Single-Page-Apps oder serverseitige Anwendungen. Die Access Tokens haben meist eine begrenzte Lebensdauer und können durch Refresh Tokens erneuert werden.
Sicherheitsaspekte
OAuth 2.0 verbessert die Sicherheit, indem es die Weitergabe von Passwörtern an Drittanbieter vermeidet und stattdessen temporäre Tokens verwendet. Die Kommunikation erfolgt in der Regel über HTTPS, um die Vertraulichkeit und Integrität der übertragenen Daten zu gewährleisten. Dennoch ist die sichere Implementierung entscheidend, da Fehlkonfigurationen zu Sicherheitslücken führen können.
Das Protokoll sieht Mechanismen vor, um Angriffe wie Token-Diebstahl oder Cross-Site Request Forgery (CSRF) zu verhindern. Beispielsweise wird im Autorisierungscodefluss ein sogenannter State-Parameter verwendet, um die Integrität der Anfrage zu sichern. Zudem können Access Tokens mit eingeschränkten Rechten versehen werden, um den Schaden bei einem Missbrauch zu begrenzen.
Einsatzgebiete
OAuth 2.0 findet breite Anwendung in der API-Authentifizierung und Autorisierung, insbesondere bei Webdiensten und mobilen Anwendungen. Es ermöglicht Nutzern, einem Dienst den Zugriff auf ihre Daten bei einem anderen Dienst zu erlauben, ohne ihre Zugangsdaten preiszugeben. Beispiele sind das Anmelden bei einer Anwendung über Google oder Facebook oder das Verbinden von Apps mit Cloud-Diensten.
Darüber hinaus wird OAuth 2.0 in Single Sign-On-Systemen (SSO) und als Grundlage für OpenID Connect genutzt, einem Protokoll zur Authentifizierung, das auf OAuth 2.0 aufbaut. Die Flexibilität des Protokolls erlaubt den Einsatz in verschiedenen Architekturen, von einfachen Webanwendungen bis hin zu komplexen Microservice-Umgebungen.
Abgrenzung zu verwandten Standards
OAuth 2.0 ist kein Authentifizierungsprotokoll, sondern ausschließlich auf Autorisierung ausgelegt. Im Gegensatz dazu dient OpenID Connect, das auf OAuth 2.0 aufbaut, der Authentifizierung von Nutzern und ergänzt OAuth um Identitätsinformationen. OAuth 1.0 war der Vorgänger, der jedoch komplexere Signaturmechanismen erforderte und weniger flexibel war.
Alternativen zu OAuth 2.0 sind proprietäre Autorisierungslösungen oder andere Standards wie SAML (Security Assertion Markup Language), das vor allem im Unternehmensumfeld für Single Sign-On verwendet wird. OAuth 2.0 zeichnet sich durch seine einfache Integration in Web- und Mobile-Umgebungen aus, während SAML stärker auf XML-basierte Protokolle und Unternehmensanwendungen ausgerichtet ist.