www.wikidata.de-de.nina.az
OAuth Open Authorization ist der Name zweier verschiedener offener Protokolle die eine standardisierte sichere API Autorisierung fur Desktop Web und Mobile Anwendungen erlauben OAuth 1 0 wurde ab 2006 entwickelt und 2007 veroffentlicht OAuth 2 0 das sich grundlegend von OAuth 1 0 unterscheidet wurde 2012 von der IETF als RFC 6749 1 und RFC 6750 2 veroffentlicht OAuth LogoEin Endbenutzer User oder Resource Owner kann mit Hilfe dieses Protokolls einer Anwendung Client oder Relying Party den Zugriff auf seine Daten erlauben Autorisierung die von einem anderen Dienst Resource Server bereitgestellt werden ohne geheime Details seiner Zugangsberechtigung Authentifizierung der Anwendung preiszugeben Der Endbenutzer kann so Dritten gestatten in seinem Namen einen Dienst zu benutzen Typischerweise wird dabei die Ubermittlung von Passwortern an Dritte vermieden Auf Basis von OAuth 2 0 wird OpenID Connect heute in vielen Internetdiensten auch zur Authentifizierung von Benutzern eingesetzt Inhaltsverzeichnis 1 Geschichte 1 1 OAuth 1 0 1 2 OAuth 2 0 2 Rollen 3 Token 4 Abstrakter OAuth 2 0 Protokollfluss 5 Authorization Grant Types 6 Anwendungsfall 7 OAuth 2 0 und OpenID Connect 8 Sicherheit 9 Weblinks 10 Einzelnachweise 11 AnmerkungenGeschichte BearbeitenOAuth 1 0 Bearbeiten OAuth 1 0 wurde im November 2006 gestartet als Blaine Cook die OpenID Implementierung fur Twitter entwickelte Zur selben Zeit brauchte Ma gnolia eine Losung die seinen Benutzern mit OpenIDs erlaubte Dashboard Widgets zu autorisieren ihre Dienste zu benutzen Deshalb trafen sich Blaine Cook Chris Messina und Larry Halff von Ma gnolia mit David Recordon um die Verwendung von OpenID mit den APIs von Twitter und Ma gnolia fur die Delegation der Authentifizierung zu diskutieren Sie stimmten uberein dass es zu dieser Zeit keinen offenen Standard fur eine API Zugriffsdelegation gab Das OAuth Internetforum wurde im April 2007 fur eine kleine Gruppe Implementierer angelegt um einen Entwurfsvorschlag fur ein offenes Protokoll zu schreiben DeWitt Clinton von Google horte von dem OAuth Projekt und druckte sein Interesse an der Unterstutzung dieses Vorhabens aus Im Juli 2007 gab das Team einen ersten Spezifikationsentwurf heraus Am 3 Oktober 2007 wurde der OAuth Core 1 0 Entwurf veroffentlicht OAuth 2 0 Bearbeiten Auf dem 73 IETF Treffen in Minneapolis im November 2008 wurde eine Sitzung abgehalten um das Einbringen des Protokolls in die IETF fur weitere Standardisierungsarbeiten zu diskutieren Das Treffen sorgte mit breiter Unterstutzung fur die Einrichtung einer OAuth Arbeitsgruppe in der IETF Diese Arbeitsgruppe entwickelte OAuth 2 0 und publizierte es in RFC 6749 1 und RFC 6750 2 Die IETF OAuth Arbeitsgruppe leitet auch heute noch die weitere Entwicklung von OAuth 2 0 durch zahlreiche Erweiterungen und Erganzungen zum Standard Rollen BearbeitenIn OAuth 2 0 existieren vier Rollen 1 Resource Owner Eine Entitat User die einem Dritten den Zugriff auf ihre geschutzten Ressourcen gewahren kann Diese Ressourcen werden durch den Resource Server bereitgestellt Ist der Resource Owner eine Person wird dieser als User bezeichnet Resource Server Der Server Dienst auf dem die geschutzten Ressourcen Protected Resources liegen Er ist in der Lage auf Basis von Access Tokens darauf Zugriff zu gewahren Ein solcher Token reprasentiert die delegierte Autorisierung des Resource Owners Client Eine Anwendung Relying Party die auf geschutzte Ressourcen des Resource Owners zugreifen mochte die vom Resource Server bereitgestellt werden Der Client kann auf einem Server Webanwendung Desktop PC mobilen Gerat etc ausgefuhrt werden Authorization Server Der Server authentifiziert den Resource Owner und stellt Access Tokens fur den vom Resource Owner erlaubten Anwendungsbereich Scope aus Authorization Server und Resource Server werden haufig zusammengelegt und gemeinsam betrieben Token BearbeitenOAuth 2 0 verwendet Tokens zur Autorisierung eines Zugriffs auf geschutzte Ressourcen Dadurch kann einem Client Zugriff auf geschutzte Ressourcen gewahrt werden ohne die Zugangsdaten des Dienstes an den Client weitergeben zu mussen Access Token Um auf geschutzte Daten auf dem Resource Server zuzugreifen muss ein Access Token vom Client als Reprasentation der Autorisierung ubermittelt werden Mittels des Parameters scope konnen die mit dem Access Token verbundenen Berechtigungen festgelegt werden Zum einen kann der Client gewunschte Berechtigungen beim Authorization Server anfragen zum anderen teilt dieser die gewahrten Berechtigungen mit Das Access Token hat eine zeitlich begrenzte Gultigkeit Refresh Token Ein Refresh Token kann dazu verwendet werden beim Authorization Server ein neues Access Token anzufragen falls das Access Token abgelaufen oder ungultig geworden ist Das Refresh Token hat ebenfalls eine zeitlich begrenzte Gultigkeit Diese wird in der Regel hoher gewahlt als die des Access Tokens Das Refresh Token wird wie das Access Token nach der Autorisierung durch den Resource Owner vom Authorization Server an den Client gesendet Da das Refresh Token selbst schon die Autorisierung des Resource Owners reprasentiert muss fur diese Neuanfrage eines Access Tokens keine weitere Autorisierung des Resource Owners mehr eingeholt werden RFC 6749 Kapitel 1 5 3 Der Einsatz von Access Token und Refresh Token besitzt den Vorteil dass die Lebensdauer des Access Tokens gering wenige Minuten gehalten werden kann und somit die Sicherheit des Protokolls erhoht wird da der Resource Server keinen Zugriff auf das langlebige Refresh Token hat weil jenes im Gegensatz zum Access Token nur zwischen Client und Authorization Server ausgetauscht wird Wurde der Resource Server die Autorisierung nur bei der ersten Anfrage uberprufen wurde ein Rechteentzug keine Folgen haben Ein Zugriff auf Daten und Dienste beim Resource Server ware dann fur den Client weiterhin moglich Da jedoch die Lebenszeit des Access Tokens nur wenige Minuten betragt wurde ein spateres Erlangen des Access Tokens durch einen Angreifer keine weitreichenden Folgen haben da der Authorization Server die Zugriffsberechtigungen bei Neuausstellung eines Access Tokens auf Basis des Refresh Tokens uberprufen kann Abstrakter OAuth 2 0 Protokollfluss Bearbeiten nbsp Protocol Flow von OAuth 2 0Der Client fordert eine Autorisierung vom Resource Owner an Diese Autorisierungsanforderung kann direkt erfolgen wird aber bevorzugt indirekt uber den Authorization Server durchgefuhrt Der Client erhalt eine Autorisierungsgenehmigung vom Resource Owner Die Autorisierung kann uber einen der vier Autorisierungsgenehmigungsprozesse authorisation grant types erfolgen oder es wird ein erweiterter Genehmigungsprozess verwendet Der Client fordert ein Access Token vom Authorization Server an Hierfur nutzt er die Autorisierungsgenehmigung vom Resource Owner Der Authorization Server authentisiert den Client permission to ask und pruft die Autorisierungsgenehmigung des Resource Owners Ist diese erfolgreich stellt er ein Access Token aus Der Client fragt die geschutzten Daten beim Resource Server an Zur Authentisierung benutzt er das Access Token Der Resource Server pruft das Access Token und stellt wenn gultig die gewunschten Daten zur Verfugung Authorization Grant Types BearbeitenUm unterschiedliche Anwendungsfalle optimal abdecken zu konnen wurden vier Genehmigungsprozesse definiert authorization code implicit resource owner password credentials client credentials Ferner wurde die Moglichkeit offengehalten weitere Grant Types zu definieren So wurde z B im RFC 7523 4 die Nutzung von JSON Web Tokens JWT und im RFC 7522 5 die von SAML 2 0 definiert Anwendungsfall Bearbeiten nbsp Authorization Code Grant FlowEin Benutzer Resource Owner hat bei einem Online Server F fur Fotos Resource Server ein Benutzerkonto und einige Bilder Protected Resources hinterlegt Er mochte die Bilder auf einem Dienst D fur Farbdrucke Client ausdrucken lassen Hierzu soll der Dienst D Zugriff auf die Bilder des Benutzers auf dem Server F erhalten Da es sich hierbei um einen anderen Dienst handelt als solche die der Server F eventuell zur Verfugung stellt muss sich Dienst D beim Server F autorisieren damit der Zugriff gewahrt wird Aus Sicherheitsgrunden ware es nicht sinnvoll dass der Benutzer seine Zugangsdaten Benutzername und Passwort fur den Server F an den Dienst D ubermittelt damit dieser sich mit den vertraulichen Zugangsdaten authentifiziert Denn dadurch hatte Dienst D uneingeschrankten Zugang auf die Daten und Funktionen im Benutzerkonto beim Server F Der weitere Zugriff fur Dienst D konnte dann nur noch durch das Andern des Passworts verhindert werden In einem solchen Fall ermoglicht OAuth dem Dienst D den Zugriff auf bestimmte vom Benutzer freigegebene Daten meist auch nur temporar und dies ganz ohne Preisgabe der Zugangsdaten an Dienst D Hierzu ist auf der Seite des Dienstes D ein Link platziert welcher die Beschreibung Fotos von Server F laden hat und den Vorgang initiiert Bereits in diesem Link sind die Informationen uber das Vorhaben von Dienst D kodiert Der Protokollablauf nach OAuth 2 0 sieht in diesem Fall wie folgt aus 1 Der Benutzer Resource Owner wird durch einen Link auf den Server F weiter geleitet wo er sich anmelden muss Autorisierungs Anfrage Authorization Request Zusatzlich wird ihm angezeigt welcher Dienst auf welche Daten zugreifen mochte Schritte 1 6 Der Benutzer stimmt durch einen entsprechenden Link zu Autorisierungsgewahrung Authorization Grant dass Dienst D auf seine Fotos zugreifen darf Server F erstellt daraufhin einen Autorisierungs Code und teilt diesen dem Dienst D mit Parallel wird der Benutzer wieder auf die Seite des Dienstes D umgeleitet Schritte 7 10 Dienst D fragt nun Server F mit dem Autorisierungs Code nach einem Access Token Schritt 11 Server F erstellt ein Access Token und ubermittelt dieses an Dienst D Schritt 12 Dienst D kann nun auf die Fotos von Server F zugreifen wobei er jedes Mal das Access Token mit ubermittelt Schritt 13 Daraufhin liefert Server F die geschutzten Fotos des Benutzers an Dienst D aus Schritt 14 Die obigen Punkte 1 6 entsprechen den Punkten A F in Abschnitt 1 2 Protocol Flow des RFC 6749 6 bzw dem oben dargestellten abstrakten OAuth 2 0 Protokollfluss OAuth 2 0 und OpenID Connect BearbeitenOpenID Connect 1 0 ist eine Identitatsschicht basierend auf OAuth 2 0 7 Es ermoglicht Clients die Identitat des Nutzers anhand der Authentifizierung durch einen Autorisierungsserver zu uberprufen Ferner konnen weitere grundlegende Informationen uber den Nutzer in einer interoperablen Form REST erlangt werden OpenID Connect ermoglicht es Clients aller Art einschliesslich Web basierter mobiler und JavaScript Clients uberhaupt Informationen uber authentifizierte Sitzungen und Nutzer zu erhalten Die Spezifikation ist erweiterbar um optionale Funktionen wie Verschlusselung von Identitatsdaten Finden von OpenID Providern und Session Management OpenID Connect erweitert somit OAuth 2 0 um alle notwendigen Funktionen fur ein personalisiertes Login und Single Sign On Sicherheit BearbeitenAm 23 April 2009 wurde eine Sicherheitslucke im Protokoll von OAuth 1 0 aufgedeckt Sie betraf den OAuth Authentifizierungsablauf auch bekannt als Dreibeiniges OAuth englisch 3 legged OAuth im OAuth Core 1 0 Abschnitt 6 8 Eran Hammer ein bis dahin zentraler Redakteur der Spezifikation OAuth 2 0 verliess Ende Juli 2012 das Projekt 9 weil dessen Komplexitat seiner Einschatzung nach von den meisten Softwareentwicklern kaum noch sicher implementierbar sei 10 Weblinks Bearbeitenoauth net englisch OAuth 2 0 Einzelnachweise Bearbeiten a b c d Dick Hardt RFC 6749 The OAuth 2 0 Authorization Framework Errata RFC 6749 Oktober 2012 englisch a b Dick Hardt Michael Jones RFC 6750 The OAuth 2 0 Authorization Framework Bearer Token Usage Errata RFC 6750 Oktober 2012 englisch RFC 6749 The OAuth 2 0 Authorization Framework Abschnitt 1 5 Refresh Token englisch Brian Campbell Michael Jones Chuck Mortimore RFC 7523 JSON Web Token JWT Profile for OAuth 2 0 Client Authentication and Authorization Grants Mai 2015 englisch Brian Campbell Michael Jones Chuck Mortimore RFC 7522 Security Assertion Markup Language SAML 2 0 Profile for OAuth 2 0 Client Authentication and Authorization Grants Mai 2015 englisch RFC 6749 The OAuth 2 0 Authorization Framework Abschnitt 1 2 Protocol Flow englisch OpenID Connect OpenID Foundation 26 Februar 2014 abgerufen am 28 September 2016 englisch Eran Hammer Lahav OAuth Security Advisory 2009 1 In oauth net 23 April 2009 abgerufen am 30 Juli 2016 englisch A session fixation attack against the OAuth Request Token approval flow OAuth Core 1 0 Section 6 has been discovered Ragni Zlotos Entwickler OAuth 2 0 weniger interoperabel und weniger sicher In heise de 27 Juli 2012 abgerufen am 21 April 2019 Eran Hammer OAuth 2 0 and the Road to Hell 26 Juli 2012 abgerufen am 4 Juli 2022 englisch Anmerkungen Bearbeiten Abgerufen von https de wikipedia org w index php title OAuth amp oldid 237198996