openid connect (oidc) - phpug-dresden.org · technologie fördert kommunikation © 2019 |...
TRANSCRIPT
Technologie fördert Kommunikation
© 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019
OpenID Connect (OIDC) OAuth 2.0, JWT, JWK
Frank Hönisch
© 2019 | tyclipso.net | Denis Bartelt 2
OpenID Connect, OAuth 2.0, JWT, JWK
© 2019 | tyclipso.net | Denis Bartelt
Motivation für OAuth und OIDC
3
häufige Architektur
Quelle: https://www.heise.de/developer/artikel/Flexible-und-sichere-Internetdienste-mit-OAuth-2-0-2068404.html
Authentifizierung
& Autorisierung
© 2019 | tyclipso.net | Denis Bartelt
Motivation für OAuth und OIDC
4
häufige Architektur
Quelle: https://www.heise.de/developer/artikel/Flexible-und-sichere-Internetdienste-mit-OAuth-2-0-2068404.html
© 2019 | tyclipso.net | Denis Bartelt
Motivation für OAuth und OIDC
5
Quelle: https://www.heise.de/developer/artikel/Flexible-und-sichere-Internetdienste-mit-OAuth-2-0-2068404.html
© 2019 | tyclipso.net | Denis Bartelt 6
OAuth 2.0
Open Authorization 2.0
• Autorisierungsprotokoll
• API-Autorisierung für Apps
• verwendet Access Tokens
• zur Zugriffskontrolle auf geschützte Ressourcen
• aber keine Nutzerinformationen
© 2019 | tyclipso.net | Denis Bartelt 7
OAuth 2.0
Open Authorization 2.0
Liefert keine Informationen:
• Art der Authentifizierung
• Zugangsdaten
• keine Benutzerdaten !!!
© 2019 | tyclipso.net | Denis Bartelt 8
Open ID Connect
OpenID Connect
• Authentifizierungsprotokoll
basierend auf OAuth 2.0
Ermöglicht Anwendungen
• Authentifizierung: Identität eines Nutzers überprüfen
• Liefert grundlegende Nutzerinformationen
© 2019 | tyclipso.net | Denis Bartelt 9
Technische Basis
• HTTP Schnittstelle mit REST-Mechanismen
• Datenformat: JSON
Open ID Connect
© 2019 | tyclipso.net | Denis Bartelt 10
Open ID Connect
Wie erweitert Open ID Connect OAuth 2.0?
• Open Authorization 2.0 + Identitätsschicht
• Informationen zum Benutzer
• ermöglicht Clients die Einrichtung von Anmeldesitzungen
Open Authorization 2.0 + (Identität, Authentifizierung)
= OpenID Connect
© 2019 | tyclipso.net | Denis Bartelt 11
Open ID Connect
© 2019 | tyclipso.net | Denis Bartelt 12
Open ID Connect
Quelle: https://www.heise.de/developer/artikel/OpenID-Connect-Login-mit-OAuth-Teil-1-Grundlagen-2218446.html?seite=all
© 2019 | tyclipso.net | Denis Bartelt 13
Open ID Connect
Authorization Code Flow
Quelle: https://backstage.forgerock.com/docs/am/5/oidc1-guide/
© 2019 | tyclipso.net | Denis Bartelt 14
Open ID Connect
ID Token = JSON Web Token (JWT)
Aufbau: Header, Payload, Signatur
Codierung
jwt = base64UrlEncode(header) + "." +
base64UrlEncode(payload) + "." + base64UrlEncode(hash)
© 2019 | tyclipso.net | Denis Bartelt 15
Open ID Connect
ID Token = JSON Web Token (JWT)
© 2019 | tyclipso.net | Denis Bartelt 16
Open ID Connect
ID Token = JSON Web Token (JWT)
Signatur
var encodedString = base64UrlEncode(header) + "." + base64UrlEncode(payload);
var hash = RS256(encodedString, secret);
© 2019 | tyclipso.net | Denis Bartelt 17
Open ID Connect
OIDC Discovery
Metadaten des OpenID-Servers
https://server.com/.well-known/openid-configuration
© 2019 | tyclipso.net | Denis Bartelt 18
Open ID Connect
OIDC Discovery: Signaturprüfung mit JWK
© 2019 | tyclipso.net | Denis Bartelt 19
Open ID Connect
PHP Implementierungen
OpenID Connect-Client https://bitbucket.org/PEOFIAMP/phpoidc https://github.com/jumbojett/OpenID-Connect-PHP
OAuth-Client
http://oauth2-client.thephpleague.com/
JWT https://github.com/fproject/php-jwt erweitert https://github.com/firebase/php-jwt
© 2019 | tyclipso.net | Denis Bartelt 20
Open ID Connect
Referenzen / Artikel
OpenID Connect
• https://openid.net/connect/
• https://www.heise.de/developer/artikel/OpenID-Connect-Login-
mit-OAuth-Teil-1-Grundlagen-2218446.html
• https://www.heise.de/developer/artikel/OpenID-Connect-Login-
mit-OAuth-Teil-2-Identity-Federation-und-fortgeschrittene-
Themen-2266017.html
OAuth
• https://www.heise.de/developer/artikel/Flexible-und-sichere-
Internetdienste-mit-OAuth-2-0-2068404.html
© 2019 | tyclipso.net | Denis Bartelt 21
Open ID Connect
Tools
OpenID Connect
• OpenID Connect Playground: https://openidconnect.net/
• OpenID Connect <debugger/>: https://oidcdebugger.com/
OAuth
• OAuth 2.0 <debugger/> : https://oauthdebugger.com/
JWT
• Online JWT decoder / generator: https://jwt.io
© 2019 | tyclipso.net | Denis Bartelt Motiviert, effizient, dynamisch und erfolgreich.
Grundstraße 1
01326 Dresden
+49 351 3122303
Vielen Dank für eure Zeit!