Post on 14-Oct-2020
transcript
Plug & Play Benutzerverwaltung Web-Anwendungen absichern mit OAuth 2 und JBoss Keycloak
Alexander Schwartz msg systems ag
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
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
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
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
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
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
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
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
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/
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.
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
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/
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
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
Ü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
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
Ü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
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
…
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
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
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
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
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
• 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
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
• 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/
.consulting .solutions .partnership
Alexander Schwartz
Principal IT Consultant
+49 171 5625767
alexander.schwartz@msg-systems.com
@ahus1de
msg systems ag
Mergenthalerallee 73-75
65760 Eschborn
Deutschland
www.msg-systems.com