22
Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank Hönisch

OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

  • Upload
    lamminh

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Page 1: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

Technologie fördert Kommunikation

© 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019

OpenID Connect (OIDC) OAuth 2.0, JWT, JWK

Frank Hönisch

Page 2: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 2019 | tyclipso.net | Denis Bartelt 2

OpenID Connect, OAuth 2.0, JWT, JWK

Page 3: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 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

Page 4: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 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

Page 5: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 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

Page 6: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 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

Page 7: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 2019 | tyclipso.net | Denis Bartelt 7

OAuth 2.0

Open Authorization 2.0

Liefert keine Informationen:

• Art der Authentifizierung

• Zugangsdaten

• keine Benutzerdaten !!!

Page 8: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 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

Page 9: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 2019 | tyclipso.net | Denis Bartelt 9

Technische Basis

• HTTP Schnittstelle mit REST-Mechanismen

• Datenformat: JSON

Open ID Connect

Page 10: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 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

Page 11: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 2019 | tyclipso.net | Denis Bartelt 11

Open ID Connect

Page 12: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 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

Page 13: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 2019 | tyclipso.net | Denis Bartelt 13

Open ID Connect

Authorization Code Flow

Quelle: https://backstage.forgerock.com/docs/am/5/oidc1-guide/

Page 14: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 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)

Page 15: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 2019 | tyclipso.net | Denis Bartelt 15

Open ID Connect

ID Token = JSON Web Token (JWT)

Page 16: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 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);

Page 17: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 2019 | tyclipso.net | Denis Bartelt 17

Open ID Connect

OIDC Discovery

Metadaten des OpenID-Servers

https://server.com/.well-known/openid-configuration

Page 18: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 2019 | tyclipso.net | Denis Bartelt 18

Open ID Connect

OIDC Discovery: Signaturprüfung mit JWK

Page 19: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 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

Page 20: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 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

Page 21: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 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

Page 22: OpenID Connect (OIDC) - phpug-dresden.org · Technologie fördert Kommunikation © 2019 | tyclipso.net | Denis Bartelt 26. Februar 2019 OpenID Connect (OIDC) OAuth 2.0, JWT, JWK Frank

© 2019 | tyclipso.net | Denis Bartelt Motiviert, effizient, dynamisch und erfolgreich.

Grundstraße 1

01326 Dresden

+49 351 3122303

[email protected]

Vielen Dank für eure Zeit!