security-zone-News
 

OAuth und OpenID Connect – die Federation-Protokolle der Zukunft oder ein Sicherheitsrisiko?



Stephan Schweizer, AdNovum Informatik AG

Leichtgewichtige Federation-Protokolle wie OAuth und OpenID Connect haben im Kontext von Facebook & Co. an Bedeutung gewonnen. Ein zentraler Designaspekt der neuen Protokolle waren Einfachheit und Leichtgewichtigkeit – die Protokolldesigner sind dabei bewusst gewisse Security-Kompromisse eingegangen. Dieser Umstand hat in der Community und unter den Protokolldesignern zu sehr kontroversen Diskussionen geführt. Doch was steckt dahinter und was braucht es, um die Protokolle auch im Enterprise-Umfeld einsetzen zu können?

Wie funktioniert eigentlich OAuth?
OAuth adressiert ein Problem, das in modernen Web-Architekturen mehr und mehr zum Standardfall wird: Eine Applikation ruft ihrerseits REST-basierte Webservices einer anderen Organisation auf und greift dabei auf Inhalte und Daten zu, die dem Benutzer der Applikation gehören. Das unten stehende Bild illustriert das Problem:



In der Breakout-Session vom Mittwoch, 17. September, von 10:15 – 10:45 Uhr beleuchtet Stephan Schweizer die Internas von OAuth und OpenID Connect sowie die Hintergründe der schwelenden Security-Kontroverse rund um OAuth 2.0. Ausserdem wird gezeigt, welche Funktionsbausteine notwendig sind, damit ein grossflächiger und sicherer Einsatz der Protokolle im Enterprise-Umfeld möglich ist. Mehr Infos und Anmeldung hier >>

User Bob möchte seine in der Cloud gespeicherten Photos (Photo-Store z.B. Picasa, Instagram) von einem professionellen Photo-Printing-Service drucken lassen. Dabei soll die Applikation des Printing-Services die ausgewählten Bilder direkt aus der Cloud beziehen können. Gleichzeitig möchte User Bob jedoch keinesfalls seine Photo-Store-Credentials dem Printing-Service übergeben müssen.
Der Photo-Store-Service seinerseits muss jedoch wissen, in wessen Auftrag der Printing-Service auf Daten zugreifen will. Denn um die Daten der anderen Nutzer zu schützen, muss der Photo-Store-Service sicherstellen, dass der Printing-Service nur Zugriff auf die Daten von Bob erhält. Aus rechtlichen Gründen muss oder möchte der Photo-Store-Service zusätzlich noch die Zustimmung von Bob einholen, bevor der Zugriff auf dessen Daten freigegeben wird.

Aufgrund dieser Ausgangslage ist es offensichtlich, dass althergebrachte Ansätze mit technischen Benutzern den Anforderungen nicht gerecht werden. Die Lösung für das Problem bietet das Autorisierungsprotokoll OAuth 2.0:



Um das Autorisierungsprotokoll OAuth zu nutzen, muss der Photo-Store-Service einen OAuth Authorization Server bereitstellen. Wie der Name vermuten lässt, ist der OAuth Authorization Server für die Ausstellung von Authorization Tokens sowie die damit verbundene Benutzer-Authentisierung zuständig. Damit der Photo-Printing-Service den Authorization Server des Photo-Stores nutzen kann, muss die Printing-Applikation vorgängig als sogenannter OAuth Client beim Authorization Server des Photo-Stores registriert werden. Dabei erhält die Photo-Printing-Applikation eine ClientID sowie ein Client-Credential zugeordnet, die in der Kommunikation mit dem Authorization Server jeweils mitgegeben werden müssen. Sobald der Benutzer der Printing-Applikation nun auf die in der Cloud gespeicherten Photos zugreifen will, leitet ihn die Printing-Applikation via HTTP Redirect an den Authorization Server des Photo-Stores weiter. Nach erfolgter Authentisierung wird dem Benutzer ein sogenannter "User-Consent- Dialog" angezeigt.

Das Ziel dieses Dialogs besteht darin, den Benutzer über den gewünschten Datenzugriff der Printing-Applikation zu informieren und seine Zustimmung einzuholen. Wenn der Benutzer zustimmt, stellt der Authorization Server einen sogenannten Authorization Code aus, der von der Printing-Applikation dazu verwendet wird, ein Access Token für den Service-Zugriff anzufordern. Der Zwischenschritt über den Authorization Code hat den Vorteil, dass das Access Token nicht im Browser des Endbenutzers exponiert wird. Für mobile Applikationen oder Applikationen, die als JavaScript-Client im Browser ausgeführt werden, stellt das OAuth-Protokoll zusätzlich einen vereinfachten Protokoll-Flow zur Verfügung, bei dem der Zwischenschritt über den Access Code entfällt.
Der Printing-Service ist nun in der Lage, mit dem Access Token auf die Photos des Endbenutzers zuzugreifen. Die Validierung des Access Token erfolgt dabei durch den OAuth Resource Server. Diese Funktionalität kann entweder direkt im aufgerufenen Service oder in einer vorgelagerten Security-Komponente implementiert werden.

Und im Enterprise-Umfeld?

Dass OAuth im Zusammenhang mit Social-Media-Plattformen bereits eine weite Verbreitung gefunden hat, ist hinlänglich bekannt. Doch wie relevant ist das Protokoll eigentlich im Enterprise-Umfeld? Um diese Frage zu beantworten, muss man sich kurz vor Augen führen, wie moderne Wertschöpfungsketten im Dienstleistungs- und Industriesektor heutzutage aufgebaut sind. Bei näherer Betrachtung erkennt man schnell, dass es kaum mehr Fertigungs- oder Dienstleistungsprozesse gibt, die vollständig isoliert innerhalb einer Firma abgewickelt werden. Um die firmenübergreifenden Prozesse möglichst effizient zu gestalten, stehen Unternehmen daher vor der Herausforderung, Service-Schnittstellen von Lieferanten und Kunden möglichst effizient in die eigene IT-Landschaft zu integrieren. Hinzu kommen weitere Einflussfaktoren wie die Einbindung von mobilen Applikationen und "Smart-Devices", die ebenfalls über Web-basierte Schnittstellen auf Unternehmensdaten zugreifen müssen:



Die Protokolle OAuth und OpenID Connect wurden gezielt für diese Anwendungsfälle konzipiert. Eine geeignete Security-Infrastruktur, welche die Protokolle beherrscht, ermöglicht daher den Unternehmen, rasch auf veränderte Rahmenbedingungen zu reagieren und die IT-Systeme neuer Kunden, Partner und Lieferanten unmittelbar in die eigenen Prozesse einzubinden. Die rasche und sichere Adaption IT-gestützter Prozesse ist heutzutage für die meisten Unternehmen ein wichtiger Wettbewerbsfaktor, der nicht zu unterschätzen ist.