Plug & Play Benutzerverwaltung mit JBoss Keycloak

Plug & Play Benutzerverwaltung mit JBoss Keycloak

Die Benutzerverwaltung ist der wichtigste Baustein für eine sichere Anwendung. Das „Open Web Application Security Project“ (OWASP) gibt hierzu viele Empfehlungen. Es wird schnell klar, dass eine eigene Benutzerverwaltung viel Arbeit bedeutet, und die Wiederverwendung einer fertigen Benutzerverwaltung sicherer wäre.
Mit JBoss Keycloak gibt es eine OpenSource-Benutzerverwaltung, die sich über OAuth 2.0 auf einfache Art in die eigene Anwendung integrieren lässt. Alle Funktionen, von der Registrierung über die Integration von Google, Facebook, Twitter und LDAP, stehen so ohne Programmierung zur Verfügung und können individuell konfiguriert werden. Teilen sich mehrere Anwendungen eine Benutzerverwaltung, so steht ein anwendungsübergreifendes Single-Sign-On und Single-Sign-Out zur Verfügung.

Der Vortrag gibt einen kurzen Überblick über OAuth 2 und die Funktionalität von Keycloak. Beispielanwendungen zeigen die verschiedenen Integrationsmöglichkeiten, angefangen bei Java EE-Web-Anwendungen über JavaScript-Client-Anwendungen bis hin zu Java-REST-Services.

5f528a3f6814d28b583f31842e3e8d9e?s=128

Alexander Schwartz

September 16, 2016
Tweet

Transcript

  1. 1.

    .consulting .solutions .partnership Plug & Play Benutzerverwaltung mit JBoss Keycloak

    Alexander Schwartz, Principal IT Consultant Berlin Expert Days, 16.09.2016
  2. 2.

    Plug & Play Benutzerverwaltung mit JBoss Keycloak 2 © msg

    | September 2016 | JBoss Keycloak | Alexander Schwartz Die Killerapplikation 1 Vorstellung von JBoss Keycloak 2 Absicherung einer JEE Webanwendung 3 Integration externer Authentifizierungsquellen 4 Absicherung einer JavaScript Single Page Application 5 Absicherung von REST Services 6 Ausblick 7 Secure all the things! 8
  3. 3.

    Mein Sponsor und Arbeitgeber – msg systems ag © msg

    | September 2016 | JBoss Keycloak | Alexander Schwartz 3 1980 gegründet mehr als 5.500 Kollegen 727 Mio € Umsatz 2015 23 Länder in 14 Städten in Deutschland präsent
  4. 4.

    Wer ich bin – Alexander Schwartz © msg | September

    2016 | JBoss Keycloak | Alexander Schwartz 4 13 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 443 gefundene Geocaches @ahus1de
  5. 5.

    Plug & Play Benutzerverwaltung mit JBoss Keycloak 5 © msg

    | September 2016 | JBoss Keycloak | Alexander Schwartz Die Killerapplikation 1 Vorstellung von JBoss Keycloak 2 Absicherung einer JEE Webanwendung 3 Integration externer Authentifizierungsquellen 4 Absicherung einer JavaScript Single Page Application 5 Absicherung von REST Services 6 Ausblick 7 Secure all the things! 8
  6. 6.

    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 2016 | JBoss Keycloak | Alexander Schwartz 6
  7. 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 2016 | JBoss Keycloak | Alexander Schwartz 7
  8. 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 2016 | JBoss Keycloak | Alexander Schwartz 8
  9. 9.

    Plug & Play Benutzerverwaltung mit JBoss Keycloak 9 © msg

    | September 2016 | JBoss Keycloak | Alexander Schwartz Die Killerapplikation 1 Vorstellung von JBoss Keycloak 2 Absicherung einer JEE Webanwendung 3 Integration externer Authentifizierungsquellen 4 Absicherung einer JavaScript Single Page Application 5 Absicherung von REST Services 6 Ausblick 7 Secure all the things! 8
  10. 10.

    Vorstellung JBoss Keycloak JBoss Keycloak ist eine Benutzerverwaltung als Service

    © msg | September 2016 | JBoss Keycloak | Alexander Schwartz 10 • 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 September 2016: Version 2.2 Link: http://keycloak.org/
  11. 11.

    Vorstellung JBoss Keycloak JBoss Keycloak läuft neben der Anwendung ©

    msg | September 2016 | JBoss Keycloak | Alexander Schwartz 11 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.
  12. 12.

    Vorstellung JBoss Keycloak OAuth 2.0 für Single-Sign-On, OpenID Connect als

    Erweiterung © msg | September 2016 | JBoss Keycloak | Alexander Schwartz 12 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 Refresh Token und und ID Token Anmeldung
  13. 13.

    Vorstellung JBoss Keycloak Access Token als JSON Web Token ©

    msg | September 2016 | JBoss Keycloak | Alexander Schwartz 13 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/
  14. 14.

    Plug & Play Benutzerverwaltung mit JBoss Keycloak 14 © msg

    | September 2016 | JBoss Keycloak | Alexander Schwartz Die Killerapplikation 1 Vorstellung von JBoss Keycloak 2 Absicherung einer JEE Webanwendung 3 Integration externer Authentifizierungsquellen 4 Absicherung einer JavaScript Single Page Application 5 Absicherung von REST Services 6 Ausblick 7 Secure all the things! 8
  15. 15.

    Absicherung einer JEE Webanwendung Keycloak einrichten © msg | September

    2016 | JBoss Keycloak | Alexander Schwartz 15 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
  16. 16.

    Ü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 2016 | JBoss Keycloak | Alexander Schwartz 16 Absicherung einer JEE Webanwendung
  17. 17.

    Plug & Play Benutzerverwaltung mit JBoss Keycloak 17 © msg

    | September 2016 | JBoss Keycloak | Alexander Schwartz Die Killerapplikation 1 Vorstellung von JBoss Keycloak 2 Absicherung einer JEE Webanwendung 3 Integration externer Authentifizierungsquellen 4 Absicherung einer JavaScript Single Page Application 5 Absicherung von REST Services 6 Ausblick 7 Secure all the things! 8
  18. 18.

    Ü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 2016 | JBoss Keycloak | Alexander Schwartz 18 Integration externer Authentifizierungsquellen Demo Time
  19. 19.

    Plug & Play Benutzerverwaltung mit JBoss Keycloak 19 © msg

    | September 2016 | JBoss Keycloak | Alexander Schwartz Die Killerapplikation 1 Vorstellung von JBoss Keycloak 2 Absicherung einer JEE Webanwendung 3 Integration externer Authentifizierungsquellen 4 Absicherung einer JavaScript Single Page Application 5 Absicherung von REST Services 6 Ausblick 7 Secure all the things! 8
  20. 20.

    … Registrierung der Single Page Application als separate Anwendung ©

    msg | September 2016 | JBoss Keycloak | Alexander Schwartz 20 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
  21. 21.

    Plug & Play Benutzerverwaltung mit JBoss Keycloak 21 © msg

    | September 2016 | JBoss Keycloak | Alexander Schwartz Die Killerapplikation 1 Vorstellung von JBoss Keycloak 2 Absicherung einer JEE Webanwendung 3 Integration externer Authentifizierungsquellen 4 Absicherung einer JavaScript Single Page Application 5 Absicherung von REST Services 6 Ausblick 7 Secure all the things! 8
  22. 22.

    Bearer Tokens werden bei jedem Aufruf mitgeschickt © msg |

    September 2016 | JBoss Keycloak | Alexander Schwartz 22 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
  23. 23.

    Absicherung von REST Services Ablauf Bearer Token © msg |

    September 2016 | JBoss Keycloak | Alexander Schwartz 23 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, Refresh und ID Token) Asynchroner JavaScript-Aufruf (mit Bearer-Token) Anmeldung Lotto REST Demo Time
  24. 24.

    Plug & Play Benutzerverwaltung mit JBoss Keycloak 24 © msg

    | September 2016 | JBoss Keycloak | Alexander Schwartz Die Killerapplikation 1 Vorstellung von JBoss Keycloak 2 Absicherung einer JEE Webanwendung 3 Integration externer Authentifizierungsquellen 4 Absicherung einer JavaScript Single Page Application 5 Absicherung von REST Services 6 Ausblick 7 Secure all the things! 8
  25. 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 2016 | JBoss Keycloak | Alexander Schwartz 25 Ausblick
  26. 26.

    Plug & Play Benutzerverwaltung mit JBoss Keycloak 26 © msg

    | September 2016 | JBoss Keycloak | Alexander Schwartz Die Killerapplikation 1 Vorstellung von JBoss Keycloak 2 Absicherung einer JEE Webanwendung 3 Integration externer Authentifizierungsquellen 4 Absicherung einer JavaScript Single Page Application 5 Absicherung von REST Services 6 Ausblick 7 Secure all the things! 8
  27. 27.

    • 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 • Einsatz von Keycloak lohnt sich bereits bei einer Anwendung • Designziel von Keycloak ist, dass es einfach einzusetzen ist Secure all the things! © msg | September 2016 | JBoss Keycloak | Alexander Schwartz 27 Fazit @ahus1de ahus1/keycloak-dropwizard-integration http://keycloak.org/
  28. 28.

    .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