angularjs mit oauth 2 und openid connect, w-jax 2015
TRANSCRIPT
1
Moderne Authentifizierungslösungen mit OAuth 2.0 und AngularJS
Manfred Steyer
ManfredSteyer
Page 3
Aktuelles Buch
2
Ziele
Möglichkeiten bezüglich SSO und Delegation mit
OAuth 2.0 und OpenId Connect (OIDC) kennen
lernen
Möglichkeiten zur Nutzung mit JavaScript und
AngularJS kennen lernen
Folie 6
Inhalt
Motivation
Überblick zu OAuth 2.0
SSO mit OAuth 2.0
OpenId Connect
DEMO
Folie 7
3
MOTIVATION
Page 8
Ein Benutzer - zu viele Konten
Folie 9
4
Clients benötigen Zugriff
Folie 10
ÜBERBLICK ZU OAUTH 2.0
Page 11
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!
Folie 12
Rollen
Folie 13
Client
Authorization-Server
Resource-ServerResource-Owner
Registriert mit
client_id,
client_secret,
redirect_uri Registriert mit
Credentials
6
Prinzipieller Ablauf
Folie 14
Client
Authorization-Server
Resource-Server
1. Umleitung
2. Umleitung
3. Access-Token
Details legt Flow fest Ein zentrales Benutzerkonto
Nur Auth-Svr. kennt Passwort
Auth. von Client entkoppelt
Flexibilität durch Token
SPA: Kein Cookie: Kein CSRF
FLOWS
Page 15
7
Flows
Authorization Code Grant
Am meisten Sicherheitsmerkmale
Klassische Web-Anwendungen
"Langzeit-Delegation"
Implicit Grant
Clients ohne Client-Secret
Single Page Applications
Flows
Resource Owner Password Credentials Grant
Benutzer vertraut Client seine Credentials an
Client Credentials Grant
Client "in eigener Mission"
Extension Grants
8
TOKEN
Page 18
Bearer-Token
Folie 19
9
Kein Bearer-Token
Folie 20
Token-Format
OAuth 2 schreibt kein Token-Format vor
Resource Server muss Token validieren und
auswerten können
Möglichkeiten zum Validieren
Bei Auth-Server nachfragen
Signatur prüfen
Token entschlüsseln
Folie 21
10
Mögliche 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 22
SSO MIT OAUTH 2.0 UND OPENID CONNECT
Page 38
11
SSO mit OAuth
Folie 39
Client
Authorization-Server
Resource-
Server
3. /user/profile + Access-Token
1. Token anfordern
{ "user_name": "susi",
"email": "[email protected]", … }
2. Token
&scope=profile
Nicht durch
OAuth 2.0 definiert
OpenId Connect (OIDC)
Erweiterung zu OAuth 2.0
Standardisiert User-Profil-Endpunkt
Standardisiert Übermittlung von Profil-Infos
Client erhält auch ID-Token
JWT-Token mit Infos zum Benutzer + Audience
JWT-Token kann vom Aussteller signiert sein
Folie 44
12
OIDC
Folie 45
Authorization-Server
Client 1 Service 1
Access-Token
ID-Token
/voucher + Access-Token
DEMO
Page 47
13
Fazit
OAuth 2.0 zum Delegieren von Rechten
Implicit Flow: Single Page Applications
SSO: Recht zum Lesen von Profil delegieren
OpenID Connect: Authentifizierung mit OAuth 2.0
OpenID Connect: JWT Sicherheitsmerkmale
Vorteile
Zentrale Benutzerkonten
Entkopplung der Authentifizierung und Autorisierung
Flexibilität durch Token
Folie 48
[mail] [email protected]
[web] SOFTWAREarchitekt.at
[twitter] ManfredSteyer
Kontakt