Einführung in OAuth 2.0

Florian Horn // 11.12.2015

Agenda

  • Definition, Ziele und Benefits von OAuth
  • Abgrenzung OAuth
  • Allgemeiner Ablauf

Was ist OAuth 2.0?

  • Protokoll zur Authorisierungs-Delegation
  • Definiert Rollen und Abläufe für diverse Anforderungen
  • Definiert nicht die Implementierung
  • Basiert auf HTTP, andere Protokolle werde offiziell nicht supported
  • Definiert im RFC 6749, seit Oktober 2012 abgenommen
  • Ersetzt OAuth 1.0 (RFC 5849) (nicht kompatibel)

Ziele und Benefits

  • Framework zur Vergabe von begrenzten Zugriffen auf Ressourcen
  • Zugriffe für sich selbst oder im Namen anderer
  • Unterschiedlich komplexe Freigabeprozesse für Zugriffsrechte
  • Erweiterbarkeit der Freigabeprozesse
  • Separierung der Verantwortlichkeiten auf Basis der Rollen
  • Fokus der Zugriffsfreigabe liegt auf Anwendungen Dritter

Ziele und Benefits

OAuth 2.0 regelt:

Wer darf was für wen wie lange machen?



  • Klassisch: Ressourcen-Service übernimmt Authentifizierung und Authorisierung
  • OAuth 2.0: Trennung von Verantwortlichkeit für Authorisierung und Ressource
  • Zielt auf die Absicherung von APIs

Abgrenzung OAuth 2.0

OAuth 2.0 regelt nicht:

  • Die konkrete Implementierung
  • Die verwendeten Crypto-Mechanismen (Token-Generierung)
    • Bearer-Token: RFC 6750
    • MAC-Token: seit 2011 im Draft
  • Zwingt nicht auf HTTPS (ursprünglich im Draft vorgesehen)

Abgrenzung OAuth 2.0

Wo kann OAuth 2.0 verwendet werden?



  • Klassischen Programmiersprachen wie Java und PHP
  • Noch viele weitere: Python, Ruby, .NET, NodeJS, Erlang, ...
  • Ebenso nutzbar in Javascript (reine Client-seitige Ausführung)
  • Solange Kommunikation über HTTP(S)

OAuth 2.0 Rollen

Resource Owner (auch End User)
Initialisiert die Resourcen-Abfrage
Resource Server
Liefert Resource nach Verifizierung aus
Client
Applikation, die die Resourcen-Abfrage ausführt
Authorization Server
Service zur Vergabe und Überprüfung von Authorisierungs-Tokens (und mehr)

Abstrakter Ablauf

Abstrakter Ablauf

Abstrakter Ablauf

Abstrakter Ablauf

Abstrakter Ablauf

Abstrakter Ablauf

Abstrakter Ablauf

Grant Types

Grant ist ein Zugriffs-Berechtigungsnachweis, meist Benutzername und Passwort.

Grant Types definieren den Authorisierungs-Workflow.


  • User Credentials
  • Client Credentials
  • Authorization Code
  • Implicit
  • Erweiterbar durch eigene Grant Types

Grant Types

Grant ist ein Zugriffs-Berechtigungsnachweis, meist Benutzername und Passwort.

Grant Types definieren den Authorisierungs-Workflow.


Hinweis: Es ist der Implementierung überlassen, wie der Token beim Resource Server überprüft wird. In der Regel passiert das durch Gegenprüfung beim Authorization Server.

Ablauf mit Auth-Code

Ablauf mit Auth-Code

Ablauf mit Auth-Code

Ablauf mit Auth-Code

Ablauf mit Auth-Code

Ablauf mit Auth-Code

Ablauf mit Auth-Code

Ablauf mit Auth-Code

Ablauf mit Auth-Code

Ablauf mit Auth-Code

Ablauf mit Auth-Code

Access Token

  • Zeichenkette
  • Generiert vom Authorization Server
  • Wird verwendet vom Client und geprüft vom Resource Server
  • Gültigkeit zeitlich begrenzt (Expire), sehr kurzlebig (~ 1h)
  • Umfang des Zugriffs begrenzt (Scope)
  • Gültigkeit kann jederzeit widersprochen werden

Refresh Token

  • Sind optional
  • Zeichenkette
  • Generiert vom Authorization Server
  • Wird verwendet vom Client und (ausschließlich!) geprüft vom Authorization Server
  • Gültigkeit optional zeitlich begrenzt (Expire), langlebig (Wochen bis unendlich)
  • Umfang des Zugriffs begrenzt (Scope)
  • Gültigkeit kann jederzeit widersprochen werden
  • Client erhält neuen Access Token mit gleichem Scope ohne das Mitsenden des ursprünglichen Grants

Benefits von OAuth 2.0

  • Trennung der Services für die Authentifizierung und Authorisierung vom Resource-Service
  • Authorisierungs-Prozess frei wählbar nach Anforderungen
  • Authorisierungs-Prozess austauschbar, am Ende gibt es immer einen Token
  • Resource-Service muss nur noch den einheitlichen Token-Ablauf verstehen
  • Beim Auth-Code-Verfahren erfährt der Client nie den EndUser-Grant!

Bekannte OAuth Services

  • Google
  • Facebook Graph
  • Dropbox
  • GitHub
  • Meetup
  • ...

Aus, Schluss, Ende!



Bei Anregungen, Feedback oder Fragen einfach melden!