28
Plug & Play Benutzerverwaltung Web-Anwendungen absichern mit OAuth 2 und JBoss Keycloak Alexander Schwartz msg systems ag

Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Plug & Play Benutzerverwaltung Web-Anwendungen absichern mit OAuth 2 und JBoss Keycloak

Alexander Schwartz msg systems ag

Page 2: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Plug & Play Benutzerverwaltung mit JBoss Keycloak

3

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz

Die Killerapplikation 1 4

Vorstellung von JBoss Keycloak 2 8

Absicherung einer JEE Webanwendung 3 13

Integration externer Authentifizierungsquellen 4 16

Absicherung einer JavaScript Single Page Application 5 18

Absicherung von REST Services 6 20

Ausblick 7 23

Secure all the things! 8 25

Page 3: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Mein Sponsor und Arbeitgeber – msg systems ag

Alexander Schwartz / Microservices mit Dropwizard / Herbstcampus Nürnberg 2015 / © msg systems 03.09.2015 4

1980 gegründet

mehr als 5.000 Kollegen

653 Mio € Umsatz 2014

23 Länder

in 13 Städten

in Deutschland präsent

Page 4: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Wer ich bin – Alexander Schwartz

Alexander Schwartz / Microservices mit Dropwizard / Herbstcampus Nürnberg 2015 / © msg systems 03.09.2015 5

12 Jahre Java

7 Jahre PL/SQL

7 Jahre

Absatzfinanzierung

3,5 Jahre Direktbank

1 Frau

2 Kinder

443 gefundene

Geocaches

@ahus1de

Page 5: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Plug & Play Benutzerverwaltung mit JBoss Keycloak

6

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz

Die Killerapplikation 1 4

Vorstellung von JBoss Keycloak 2 8

Absicherung einer JEE Webanwendung 3 13

Integration externer Authentifizierungsquellen 4 16

Absicherung einer JavaScript Single Page Application 5 18

Absicherung von REST Services 6 20

Ausblick 7 23

Secure all the things! 8 25

Page 6: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Die Killerapplikation

1. CC0 / https://pixabay.com/de/lotto-lottoschein-schein-gewinn-484782/

CC0 / https://pixabay.com/de/geldschwemme-500-euro-euro-stapel-432688/

Mit meiner Lotto-Nummern-Vorhersage mache ich ein Vermögen!

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz 7

Page 7: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Absicherung ist notwendig:

• Anmeldeseite

• Datenbank für Benutzernamen und Passwörter

• Verschlüsselte Speicherung von Passwörtern

• Zurücksetzen von Passwörtern

• Ändern von Passwörtern

• …

Killerapplikation

1. CC BY-SA 3.0 "Work life balance rat race" by KVDP, Shokunin, Aungkarns

https://commons.wikimedia.org/wiki/File:Work_life_balance_rat_race.png

Aber: Je mehr Leute zugreifen, desto geringer ist mein Losgewinn!

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz 8

Page 8: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Es gibt Best Practices für Benutzerverwaltungen:

• Open Web Application Security Project (OWASP) hält Cheat Sheets zur Implementierung bereit

(Anmeldung, Passwort ändern, Passwort zurücksetzen)

• Fertige Benutzerverwaltungen als Framework oder Teil der Anwendung

(z. B. Apache Shiro, integriert in z. B. in Grails)

• Fertige Benutzerverwaltungen, die über eine Schnittstelle eingebunden werden

(z. B. JBoss Keycloak)

Links:

https://www.owasp.org/index.php/Authentication_Cheat_Sheet

http://shiro.apache.org/

http://keycloak.jboss.org/

Killerapplikation

Benutzerverwaltungen haben doch auch schon andere gebaut?

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz 9

Page 9: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Plug & Play Benutzerverwaltung mit JBoss Keycloak

10

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz

Die Killerapplikation 1 4

Vorstellung von JBoss Keycloak 2 8

Absicherung einer JEE Webanwendung 3 13

Integration externer Authentifizierungsquellen 4 16

Absicherung einer JavaScript Single Page Application 5 18

Absicherung von REST Services 6 20

Ausblick 7 23

Secure all the things! 8 25

Page 10: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Vorstellung JBoss Keycloak

JBoss Keycloak ist eine Benutzerverwaltung als Service

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz 11

• Single Sign On und Single Sign Out für Browser-Anwendungen

• Benutzer- und Rollenverwaltung

• Account-Management und Admin-GUI

• Grafische Anpassung des Account Managements über Themes

• Optionale Integration von LDAP/Active Directory und Social Login

• Event-Listener für alle Aktionen

September 2014: Version 1.0

Juli 2015: Version 1.4

Link:

http://keycloak.org/

Page 11: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Vorstellung JBoss Keycloak

JBoss Keycloak läuft neben der Anwendung

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz 12

Keycloak Lotto

Login: _____

Passwort: _____ Zahlen:

$?§!

Datum: _____

1. Aufruf der Anwendung

2. Weiterleitung zu Keycloak

zur Anmeldung

3. Rückleitung zur Anwendung

4. Eingabe des Datums und

Berechnen der Zahlen

(Pfeile zeigen die Navigation des

Browsers)

1.

3.

2.

4.

Page 12: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Vorstellung JBoss Keycloak

OAuth 2.0 für Single-Sign-On, OpenID Connect als Erweiterung

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz 13

Keycloak Lotto

Anfrage (nicht angemeldet)

Redirect zu Keycloak

(mit Client-Informationen) Anfrage (nicht angemeldet)

Anmeldemaske

Redirect ausführen

Antwort

Redirect zum Client

(mit Authentication Code)

Authentication Code,

Client-ID & Secret

Antwort mit Access Token

und ID Token

Anmeldung

Page 13: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Vorstellung JBoss Keycloak

Access Token als JSON Web Token

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz 14

Access Token (+/- 1500 Bytes):

ey###J9.ey####n0.PD###uA

Inhalt:

{

"alg": "RS256"

}

{

"jti": "cd2461###e695c",

"exp": 1436725029,

"allowed-origins": [],

"realm_access": {

"roles": [

"create-realm",

"admin"

]

},

"resource_access": {

“my-realm": {

"roles": [

"view-realm",

"manage-events",

"manage-realm",

"view-events",

"manage-users",

"view-users",

"view-clients",

"manage-clients",

...

]

},

},

"name": "Administrator",

"preferred_username": "admin"

}

RSASHA256(

base64UrlEncode(header) + "." +

base64UrlEncode(payload),

"-----BEGIN RSA PRIVATE KEY-----

MII###Yw==

-----END RSA PRIVATE KEY-----"

)

Link:

http://jwt.io/

Page 14: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Plug & Play Benutzerverwaltung mit JBoss Keycloak

15

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz

Die Killerapplikation 1 4

Vorstellung von JBoss Keycloak 2 8

Absicherung einer JEE Webanwendung 3 13

Integration externer Authentifizierungsquellen 4 16

Absicherung einer JavaScript Single Page Application 5 18

Absicherung von REST Services 6 20

Ausblick 7 23

Secure all the things! 8 25

Page 15: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Absicherung einer JEE Webanwendung

Keycloak einrichten

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz 16

Keycloak Lotto

Login: _____

Passwort: _____ Zahlen:

$?§!

Datum: _____

• Realm anlegen oder

bestehenden Realm benutzen

• Anwendung registrieren

• Keycloak-Bibliothek einbinden

• Keycloak Konfigurationsdatei einbinden

• web.xml Konfiguration anpassen

Demo

Time

Page 16: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Über Konfiguration können folgende Funktionen aktiviert werden:

• Verwaltung von Nutzern und Rollen

• Passwort-Policy

• Zurücksetzen des Passworts

für Administratoren

• Zurücksetzen des Passworts

durch Nutzer

• Passwort vergessen

Funktionen der Benutzerverwaltung

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz 17

Absicherung einer JEE Webanwendung

Page 17: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Plug & Play Benutzerverwaltung mit JBoss Keycloak

18

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz

Die Killerapplikation 1 4

Vorstellung von JBoss Keycloak 2 8

Absicherung einer JEE Webanwendung 3 13

Integration externer Authentifizierungsquellen 4 16

Absicherung einer JavaScript Single Page Application 5 18

Absicherung von REST Services 6 20

Ausblick 7 23

Secure all the things! 8 25

Page 18: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Über Konfiguration können folgende Funktionen aktiviert werden:

• One Time Passwords (OTPs)

• Social Login via Facebook, Twitter, etc.

• Integration mit LDAP

... und viele mehr

Funktionen der Benutzerverwaltung

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz 19

Integration externer Authentifizierungsquellen

Demo

Time

Page 19: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Plug & Play Benutzerverwaltung mit JBoss Keycloak

20

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz

Die Killerapplikation 1 4

Vorstellung von JBoss Keycloak 2 8

Absicherung einer JEE Webanwendung 3 13

Integration externer Authentifizierungsquellen 4 16

Absicherung einer JavaScript Single Page Application 5 18

Absicherung von REST Services 6 20

Ausblick 7 23

Secure all the things! 8 25

Page 20: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Registrierung der Single Page Application als separate Anwendung

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz 21

Absicherung einer JavaScript Single Page Application

Keycloak Lotto SPA

Login: _____

Passwort: _____ Zahlen:

$?§!

Datum: _____

• Anwendung registrieren mit

Access Type „public“

• JavaScript-Bibliothek einbinden

• Bei asynchronen Aufrufen Token mitschicken

Demo

Time

Page 21: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Plug & Play Benutzerverwaltung mit JBoss Keycloak

22

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz

Die Killerapplikation 1 4

Vorstellung von JBoss Keycloak 2 8

Absicherung einer JEE Webanwendung 3 13

Integration externer Authentifizierungsquellen 4 16

Absicherung einer JavaScript Single Page Application 5 18

Absicherung von REST Services 6 20

Ausblick 7 23

Secure all the things! 8 25

Page 22: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Bearer Tokens werden bei jedem Aufruf mitgeschickt

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz 23

Absicherung von REST Services

Lotto REST Server Lotto SPA

Zahlen:

$?§!

Datum: _____

• Server ist stateless, da alle

Informationen im Token in signierter

Form vorhanden sind

• Schickt Bearer-Token bei

jedem Aufruf mit

REST Aufruf mit

Bearer Token

Page 23: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Absicherung von REST Services

Ablauf Bearer Token

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz 24

Keycloak Lotto SPA

Anfrage (nicht angemeldet)

Redirect zu Keycloak

(mit Client-Informationen) Anfrage (nicht angemeldet)

Anmeldemaske

Redirect ausführen

Antwort

Redirect zum Client

(mit Access und ID Token)

Asynchroner JavaScript-Aufruf

(mit Bearer-Token)

Anmeldung

Lotto REST

Demo

Time

Page 24: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Plug & Play Benutzerverwaltung mit JBoss Keycloak

25

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz

Die Killerapplikation 1 4

Vorstellung von JBoss Keycloak 2 8

Absicherung einer JEE Webanwendung 3 13

Integration externer Authentifizierungsquellen 4 16

Absicherung einer JavaScript Single Page Application 5 18

Absicherung von REST Services 6 20

Ausblick 7 23

Secure all the things! 8 25

Page 25: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

• Aktualisierung von Tokens bei Bedarf

• Rückruf von bereits ausgegebenen Token über „not valid before“

• Single-Sign-Out (Serverseitig über Aufruf des Backends von Keycloak aus,

beim Single Page Application Frontend über iFrame)

• Erkennung von Brute-Force-Attacken auf dem Keycloak-Server

Sicherheitsmaßnahmen im Hintergrund

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz 26

Ausblick

Page 26: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

Plug & Play Benutzerverwaltung mit JBoss Keycloak

27

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz

Die Killerapplikation 1 4

Vorstellung von JBoss Keycloak 2 8

Absicherung einer JEE Webanwendung 3 13

Integration externer Authentifizierungsquellen 4 16

Absicherung einer JavaScript Single Page Application 5 18

Absicherung von REST Services 6 20

Ausblick 7 23

Secure all the things! 8 25

Page 27: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

• Keycloak bietet alle Funktionen einer Benutzerverwaltung

• Schnittstelle zur Anwendung ist über OAuth 2.0 und Open ID Connect standardisiert

• Verschiedene Integrationen sind vorhanden, eigene Integrationen sind möglich

• Funktionalität der Benutzerverwaltung wird unabhängig von der Anwendung konfiguriert

Secure all the things!

© msg | September 2015 | JBoss Keycloak | Alexander Schwartz 28

Fazit

@ahus1de

ahus1/keycloak-dropwizard-integration

http://keycloak.org/

Page 28: Plug & Play Benutzerverwaltung · 12 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de . ... Authentication

.consulting .solutions .partnership

Alexander Schwartz

Principal IT Consultant

+49 171 5625767

[email protected]

@ahus1de

msg systems ag

Mergenthalerallee 73-75

65760 Eschborn

Deutschland

www.msg-systems.com