OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 |...

Post on 29-Aug-2019

215 views 0 download

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

office@tyclipso.net

Vielen Dank für eure Zeit!