2. 2
Ziele
Möglichkeiten bezüglich SSO und Delegation
mit OAuth 2.0 und OpenId Connect (OIDC)
kennen lernen
Möglichkeiten zur Umsetzung in ASP.NET
kennen lernen
Folie 6
Inhalt
Motivation
Überblick zu OAuth 2.0
SSO mit OAuth 2.0 und OIDC
Überblick zu OWIN und Katana
Demo: Login mit Facebook
Demo: Login mit IdentityServer3
Demo: OpenId Connect mit AngularJS
Folie 7
5. 5
Was ist OAuth ?
Ursprünglich Entwickelt von Twitter und Ma.gnolia
Protokoll zum Delegieren von (eingeschränkten)
Rechten
Mittlerweile verwendet von Google, Facebook,
Flickr, Microsoft, Salesforce.com oder Yahoo!
Verschiedene Flows
Folie 12
Rollen (vereinfacht)
Folie 13
Client
Authorization-Server
Ressource-Server
User
Registriert mit
client_id,
client_secret,
redirect_uri Registriert mit
Credentials
6. 6
Prinzipieller Ablauf
Folie 14
Client
Authorization-Server
Ressource-Server
1. Umleitung
2. Umleitung
3. Token
Details legt Flow fest Ein zentrales Benutzerkonto
Nut Auth-Svr. kennt Passwort
Token-Format
OAuth 2 schreibt kein Token-Format vor
Ressource Server muss Token validieren können
Möglichkeiten zum Validieren
Bei Auth-Server nachfragen
Signatur prüfen
Token entschlüsseln
Folie 15
7. 7
Token-Formate
GUID (Referenz-Token)
Eigenes Tokenformat
Verschlüsselung und/oder Signatur durch Auth-Server
JWT: JSON Web Token
JSON-Dokument beschreibt Claims
Kann signiert und/oder verschlüsselt sein
Header gibt Auskunft über verwendete Krypto-Algorithmen
Folie 16
AUTHORIZATION CODE FLOW
Page 19
8. 8
Authorization Code Flow
Am meisten Sicherheitsmerkmale
Klassische Web-Anwendungen
Native Anwendungen
Öffnen ein Fenster mit Browser-Control
Folie 20
Authorization Code Flow
Folie 21
Client
Authorization-Server
1. Umleitung 2. Umleitung
?response_type=code
&client_id=…
&scope=…
&state=…
&redirect_uri=…
?code=4711
&state=…
Code User Client Scope
4711 Max 0815 voucher
11. 11
IMPLICIT FLOW
Page 26
Implicit Flow
Weniger Sicherheitsmerkmale als Authorization
Code Flow
Gedacht für Clients, die ein Secret nicht sicher
verwahren können
JavaScript-Clients
Single Page Applications
Folie 27
12. 12
Implicit Flow
Folie 28
Client
Authorization-Server
1. Umleitung 2. Umleitung
?response_type=token
&client_id=…
&scope=…
&state=…
&redirect_uri=…
#access_token=…
&state=…
&expires_in=…
Eigenschaften
Keine Authentifizierung des Clients
ClientId muss zur registrierten RedirectUri passen
Token am Client
Kein Refresh-Token
Folie 29
13. 13
WEITERE FLOWS
Page 30
Weitere Flows
Resource Owner Password Credentials Flow
Benutzer vertraut Client seine Credentials an
Client tauscht diese Credentials gegen Token ein
Client Credentials Grant
Client "in eigener Mission"
Client tauscht eigene Credentials gegen Token ein
Extension Grants
Folie 31
14. 14
SSO MIT OAUTH 2.0 UND
OPENID CONNECT
Page 36
SSO mit OAuth
Folie 37
Client
Authorization-Server
Ressource-
Server
3. /user/profile + Token
1. Token anfordern
{ "user_name": "susi",
"email": "susi@sorglos.at", … }
2. Token
&scope=profile
Nicht durch
OAuth 2.0 definiert
15. 15
OpenId Connect (OIDC)
Erweiterung zu OAuth 2.0
Standardisiert User-Profil-Endpunkt
Standardisiert Übermittlung von Profil-Infos
Token beinhaltet Audience
Client erhält auch ID-Token
JWT-Token mit Infos zum Benutzer + Audience
JWT-Token kann vom Aussteller signiert sein
Folie 42
OIDC
Folie 43
Authorization-Server
Client 1 Service 1
Access-Token
ID-Token
/voucher + Access-Token
16. 16
OWIN UND KATANA
Page 45
Hosting mit OWIN
Folie 46
Server
Web-Framework
Web-Application
Middleware1
Middleware2
Middleware…
Middlewaren
Anfrage
Antwort
Host-Prozess
HTTP