53
Cloak and Dagger Stories Cloak and Dagger Stories Absichern von Anwendungen mit Keycloak Absichern von Anwendungen mit Keycloak Cofinpro AG // 1 . 1

Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Cloak and Dagger StoriesCloak and Dagger Stories Absichern von Anwendungen mit KeycloakAbsichern von Anwendungen mit Keycloak

Cofinpro AG // 1 . 1

Page 2: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Wer bin ich?Wer bin ich?

Gregor Tudan

Greg0rT [email protected]

Cofinpro AG // 1 . 2

Page 3: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

State of IT-SecurityState of IT-Security

Cofinpro AG // 1 . 3

Page 4: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Have I been pawned?Have I been pawned?

Page 5: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Cofinpro AG // 1 . 4

Page 6: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Warum sichere Anmeldung schwer ist:Warum sichere Anmeldung schwer ist:

Provider bauen MistProvider bauen MistRoll your own cryptoKennwörter im Klartextseltsame Password-Policiesveraltete Verfahren (keine 2FA)Sicherheitslücken (XSS, Injection…)

User bauen MistUser bauen Mistzu leichtes Kennwortselbes Kennwort überallSocial Engineeringzu faul für 2FA

•••••

••••

Cofinpro AG // 1 . 5

Page 7: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

»Lege nicht alle Eier in einen Korb«— Sprichwort

Cofinpro AG // 1 . 6

Page 8: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

»Lege all deine Eier in einen Korb - unddann gib recht acht auf den Korb«— Marc Twain

Cofinpro AG // 1 . 6

Page 9: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Worüber rede ich?Worüber rede ich?1. kleine Einführung in OAuth2. das Keycloak-Projekt3. Absichern von Anwendungen

"klassische" WebanwendungenSingle-Page-AppsMobile Apps

•••

Cofinpro AG // 1 . 7

Page 10: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

OAuthOAuth

Cofinpro AG // 2 . 1

Page 11: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

"Wir machen OAuth!""Wir machen OAuth!"Meistens sind hier mehrere Dinge gemeint:

OAuth 2.0OpenID ConnectJSON Web-Tokens

•••

Cofinpro AG // 2 . 2

Page 12: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

OAuth 2.0OAuth 2.0Resource Owner

hat eine "Resource" die geschützt werden sollhat Credentials

ClientApp mit der ein RO auf die Resource zugreift

Resource Serverhier liegt die Resource des Owners (API)

Auth-Serverprüft die Credentials des Resource-Ownersstellt einen Token für den Zugri� auf Resourcen aus

Cofinpro AG // 2 . 3

Page 13: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

OpenID-ConnectOpenID-Connecterweitert die OAuth-Spec um:

eine REST-API für OAuthdie Möglichkeit Informationen zum User auszutauschenein einheitliches Token-Format in JSON

•••

Cofinpro AG // 2 . 4

Page 14: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

TokensTokens

Page 15: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Cofinpro AG // 2 . 5

Page 16: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Warum Tokens?Warum Tokens?entkoppeln Authentifizierung und Authorisierung

leicht weiterzureichenEchtheit kann überprüft werdenbegrenzte Lebenszeitkönnen Zusatzinfos enthalten

••••

Cofinpro AG // 2 . 6

Page 17: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

JSON Web-Tokens (JWT)JSON Web-Tokens (JWT)

Page 18: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Cofinpro AG // 2 . 7

Page 19: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

OAuth FlowOAuth Flow

Browser

Client

Auth-ServerResource Server

Cofinpro AG // 2 . 8

Page 20: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

KeycloakKeycloak

Cofinpro AG // 3 . 1

Page 21: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Keycloak istKeycloak istein Auth-Server für

OpenID ConnectSAML

Open-Sourcenicht nur für Javavon Redhat gesponsertder freie Ableger von Redhat SingleSign-On

•••

••••

Cofinpro AG // 3 . 2

Page 22: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Integration mit KeycloakIntegration mit Keycloak

the cool stu�

Keycloak

SAML LDAP RDBMS OIDC

Cofinpro AG // 3 . 3

Page 23: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

mehr als Loginmehr als LoginPassword vergessenRegistrierung

Email-VerifizierungTerms of Service

Account verwalten...

••

••

••

Cofinpro AG // 3 . 4

Page 24: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Custom ThemesCustom Themes

Cofinpro AG // 3 . 5

Page 25: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Admin UIAdmin UI

Cofinpro AG // 3 . 6

Page 26: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

weitere Featuresweitere FeaturesCluster-fähigUser-FederationSocial-LoginImpersonation2-Faktor Auth (TOTP)eigene Flows...

•••••••

Cofinpro AG // 3 . 7

Page 27: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

AnwendungenAnwendungen absichernabsichern

Cofinpro AG // 4 . 1

Page 28: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

AdapterAdapterKeycloak stellt fertige Adapter bereit für

JavaWildfly, Jetty, Tomcat, FuseServlets, JAASSpring Boot, Spring SecurityCLI, Desktop (z.B. Swing, JavaFX)

Javascript/TSStandalone, NodeJS

Generic Proxy (Keycloak Gatekeeper)

•••••

••

Cofinpro AG // 4 . 2

Page 29: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

weitere Integationenweitere Integationenjede Menge OIDC-Libraries für verschiedene Sprachen

C#PythonAndroidiOS...Apache, Nginx

••••••

https://www.keycloak.org/docs/latest/securing_apps/

Cofinpro AG // 4 . 3

Page 30: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Aufgaben der AdapterAufgaben der AdapterToken-ValidierungParsen des TokensSetzen von Rollen/BerechtigungenLogin/Logout (über Redirects)Token Refresh

•••••

Cofinpro AG // 4 . 4

Page 31: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

WebanwendungenWebanwendungenAdapter installierenAdapter installieren

in Serververzeichnis entpacken oderDependency hinzufügen

••

Cofinpro AG // 4 . 5

Page 32: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

WebanwendungenWebanwendungenClient konfigurierenClient konfigurieren

über eigene Konfigurationsdatei (keycloak.json) { "realm" : "demo", "clientId" : "hawtio-client", "url" : "http://keycloak.example.com/auth", "ssl-required" : "external", "public-client" : true }

Cofinpro AG // 4 . 6

Page 33: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

WebanwendungenWebanwendungenClient konfigurierenClient konfigurieren

Cofinpro AG // 4 . 7

Page 34: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

WebanwendungenWebanwendungenBerechtigungen konfigurierenBerechtigungen konfigurierenje nach Plattform

Konfiguration (application.yaml, web.xml)Annotationen (@RolesAllowed)programmatisch

•••

app.get('/complain', keycloak.protect(), complaintHandler);

Cofinpro AG // 4 . 8

Page 35: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

WebanwendungenWebanwendungenBerechtigungen konfigurierenBerechtigungen konfigurieren

<?xml version=""?> <web-app> <security-constraint> <web-resource-collection> <web-resource-name>Admins</web-resource-name> <url-pattern>/admin/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>KEYCLOAK</auth-method>

Cofinpro AG // 4 . 9

Page 36: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Single-Page-AppsSingle-Page-Appsüber Javascript-Adapterdarauf aufbauende Module

OAuth-Code-Flow mit PKCE Extension

••

• Keyloak-Angular• React-Keycloak

Cofinpro AG // 4 . 10

Page 37: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

OAuth und Single-Page-AppsOAuth und Single-Page-Apps: OAuth 2.0 for Browser-Based Apps

ProblemProblemBrowser und Client in Einemmögen Redirects nichtviel Validierung im Clientsicheres Speichern von Tokens?

RFC-Draft

••••

Cofinpro AG // 4 . 11

Page 38: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Keycloak GatekeeperKeycloak Gatekeeper

Browser

Gatekeeper

Keycloak Application

Cofinpro AG // 4 . 12

Page 39: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Mobile AppsMobile Apps

Cofinpro AG // 4 . 13

Page 40: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Mobile AppsMobile Apps: OAuth 2.0 for Native AppsRFC-8252

Cofinpro AG // 4 . 14

Page 41: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Hybride Apps mit CordovaHybride Apps mit Cordova

Cofinpro AG // 4 . 15

Page 42: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Hybride Apps mit CordovaHybride Apps mit Cordova

In-App BrowserIn-App BrowserWeb-View in Web-Vieweigenes UIhat einige QuirksApp sieht Interaktion

••••

Cofinpro AG // 4 . 15

Page 43: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Hybride Apps mit CordovaHybride Apps mit Cordova

In-App BrowserIn-App BrowserWeb-View in Web-Vieweigenes UIhat einige QuirksApp sieht Interaktion

NativeNativenutzt native Browser-Views

Chrome Custom-TabsSFSafariViewController

App hat keinen Zugri�Redirect zur App notwendig

••••

•••

••

Cofinpro AG // 4 . 15

Page 44: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Cordova In-Cordova In-App BrowserApp Browser

Cofinpro AG // 4 . 16

Page 45: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

CordovaCordovaNativeNative

Cofinpro AG // 4 . 17

Page 46: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

iOS Web-View-RaceiOS Web-View-Race1. UIWebView (In-App Browser - don't do it)

Cofinpro AG // 4 . 18

Page 47: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

iOS Web-View-RaceiOS Web-View-Race1. UIWebView (In-App Browser - don't do it)2. SFSafariViewController

Cofinpro AG // 4 . 18

Page 48: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

iOS Web-View-RaceiOS Web-View-Race1. UIWebView (In-App Browser - don't do it)2. SFSafariViewController3. SFAuthenticationSession (iOS 11)

Login für 3rd-Party-Apps mit OAuthSingle-Sign-On für Apps

••

Cofinpro AG // 4 . 18

Page 49: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

iOS Web-View-RaceiOS Web-View-Race1. UIWebView (In-App Browser - don't do it)2. SFSafariViewController3. SFAuthenticationSession (iOS 11)

Login für 3rd-Party-Apps mit OAuthSingle-Sign-On für Apps

4. ASWebAuthenticationSession (iOS 12)schützt User-Credentials

••

Cofinpro AG // 4 . 18

Page 50: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

iOS Web-View-RaceiOS Web-View-Race1. UIWebView (In-App Browser - don't do it)2. SFSafariViewController3. SFAuthenticationSession (iOS 11)

Login für 3rd-Party-Apps mit OAuthSingle-Sign-On für Apps

4. ASWebAuthenticationSession (iOS 12)schützt User-Credentials

Android: In-App Browser oder Custom-Tabs �

••

Cofinpro AG // 4 . 18

Page 51: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

native mobile Appsnative mobile Apps(generische) 3rd-Party Libraries

• App-Auth• AeroGear

Cofinpro AG // 4 . 19

Page 52: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Diskussion undDiskussion undFragenFragen

Cofinpro AG // 5 . 1

Page 53: Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen Mist Roll your own cr ypto Kennwör ter im Klar text seltsame Password-Policies veraltete

Bitte geben Sie uns jetzt Ihr Feedback!Cloak‑and‑Dagger‑Stories: Absichern vonAnwendungen mit OAuth und KeycloakGregor Tudan

Nächste Vorträge in diesem Raum13:30 Testautoma sierung ohneAsser ons, Dr. Jeremias Rößler14:30 TDD demys fied, Tilmann Glaser,Peter Fichtner15:45 Legacy Code im Griff dank MikadoMethode, Falk Sippach

Cofinpro AG // 5 . 2