Top Banner
CLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT CHRISTIAN KELLER
21

CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

Aug 29, 2019

Download

Documents

vukien
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

CLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT

CHRISTIAN KELLER

Page 2: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

CLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT

GLIEDERUNG

▸ OAuth 2.0 - Flows

▸ Authorization Code Grant

▸ Implicit Grant

▸ Ressource Owner Credentials Grant

▸ Client Credentials Grant

▸ OpenID Connect

▸ Vergleich

▸ Beispiel-Implementierung

Page 3: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

CLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT

OAUTH 2.0 - AUTHORIZATION CODE GRANT FLOW

�3

Page 4: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

OAUTH 2.0 - AUTHORIZATION CODE GRANT FLOW

EIGENSCHAFTEN

▸ Client verarbeitet nie Zugangsdaten (Benutzername, Passwort)

▸ Token als Schlüssel für Zugang nur Client bekannt

▸ Viele Nachrichten notwendig

▸ Anbieter kann Zwei-Faktor-Authentifizierung verwenden

▸ Beispiel: Google Playground

�4

Page 5: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

CLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT

OAUTH 2.0 - RESSOURCENZUGRIFF

�5

Page 6: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

OAUTH 2.0 - RESSOURCENZUGRIFF

EIGENSCHAFTEN

▸ Token kann validiert werden

▸ Token enthält keine Benutzerinformationen

▸ Token kann jederzeit für ungültig erklärt werden

▸ Refresh Token als Mechanismus um Token zu erneuern

�6

Page 7: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

CLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT

OAUTH 2.0 - IMPLICIT GRANT FLOW

�7

Page 8: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

OAUTH 2.0 - IMPLICIT GRANT FLOW

EIGENSCHAFTEN

▸ Optimiert für Webanwendungen

▸ Daten in der URL

▸ Unsicherer als „Authorization Code Grant Flow“

▸ Gefahr: Austausch der Zugangsdaten mit Dritten

▸ Keine Aktualisierung des Token möglich

�8

Page 9: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

CLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT

OAUTH 2.0 - RESOURCE OWNER CREDENTIALS GRANT FLOW

�9

Page 10: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

OAUTH 2.0 - RESOURCE OWNER CREDENTIALS GRANT FLOW

EIGENSCHAFTEN

▸ Analoge Umsetzung zu HTTP-Authentifizierung (Basic Auth)

▸ Client kennt Benutzerdaten (ist angehalten diese nach dem Anmeldeprozess zu verwerfen)

�10

Page 11: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

CLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT

OAUTH 2.0 - CLIENT CREDENTIALS GRANT FLOW

�11

Page 12: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

OAUTH 2.0 - CLIENT CREDENTIALS GRANT FLOW

EIGENSCHAFTEN

▸ Authentifiziert wird die Anwendung selbst

▸ Nutzer hat meist keine Kenntnis

Page 13: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

CLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT

OPENID CONNECT

▸ Erweiterung zu OAuth 2.0

▸ Zusätzliche Funktionalität durch ID Token

▸ Verwendet andere Begriffe

▸ Client Relaying Party

▸ Authorization Server Identity Provider

▸ Spezifikation beschreibt nur „Authorization Code Grant Flow“ und „Implicit Grant Flow“

�13

Page 14: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

OPENID CONNECT

ID TOKEN (JSON WEB TOKEN - JWT)

�14

eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9 .eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQ ogImh0dHA6Ly9leGFt cGxlLmNvbS9pc19yb290Ijp0cnVlfQ .dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk

{"typ":"JWT", "alg":"HS256"}{"iss":"joe", "exp":1300819380, "http://example.com/is_root":true} AIyTb[P5Z[XXSy

Base64 codiert

Schlüssel Beschreibungiss Aussteller des ID Tokens

exp Ablaufzeitpunkt in sname

meVollständiger Name

profile URL zu Profilseitepicture URL zu Benutzerbildemail E-Mail Adresse

Page 15: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

CLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT

VERGLEICH

�15

OAuth 2.0 OpenID ConnectAuthorization Code Grant Ja Ja

Implicit Grant Ja Ja

Resource Owner Credential Grant Ja Nein

Client Credentials Grant Ja Nein

Zusatzinformation mittels JWT Nein Ja

UserInfo-Endpunkt Nein Ja

Page 16: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

CLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT

VERGLEICH - TOKENBASIERTE VERFAHREN VS. HTTP BASIC AUTHENTICATION

�16

▸ Basieren beide auf SSL/TLS Verschlüsselung der Nachricht

▸ Client speichert bei HTTP Basic Authentication Benutzerdaten während tokenbasierte Verfahren nur Token speichern

Page 17: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

CLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT

VERGLEICH - TOKENBASIERTE VERFAHREN VS. FORM-BASED LOGIN

�17

▸ Form-Based Login ist nicht genauer spezifiziert. Allgemein Login über ein HTML-Formular.

▸ Abhängig gegenüber Client

▸ Tokenbasierte Verfahren sind unabhängig vom Client

Page 18: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

BEISPIEL IMPLEMENTIERUNGGithub: https://github.com/keller-c/cnj-backend

Page 19: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

CLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT

FAZIT

‣ OAuth 2.0 - sicheres Framework für eine flexible Authentifizierung und Autorisierung

‣ OpenID Connect - Erweiterung um ID Token ermöglicht weitere Informationen über den Nutzer

‣ Stand der Technik und weit verbreitet

‣ Leicht in der Anwendung mit Spring -> Fokus auf Anwendungsentwicklung

�19

Page 20: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

CLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT

QUELLEN

‣ OAuth 2.0 Spezifikationhttps://tools.ietf.org/html/rfc6749

‣ JSON Web Token (JWT)https://tools.ietf.org/html/rfc7519#section-3.1

‣ OpenID Connect – Core 1.0 Spezifikationhttp://openid.net/specs/openid-connect-core-1_0.html

�20

Page 21: CHRISTIAN KELLER CLOUD NATIVE APPS SICHERN MIT OAUTH … fileCLOUD NATIVE APPS SICHERN MIT OAUTH 2/OPENID CONNECT GLIEDERUNG OAuth 2.0 - Flows Authorization Code Grant Implicit Grant

VIELEN DANK FÜR EURE AUFMERKSAMKEIT!

Noch Fragen?