Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen...

Post on 15-Sep-2019

2 views 0 download

Transcript of Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen...

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

Cofinpro AG // 1 . 1

Wer bin ich?Wer bin ich?

Gregor Tudan

Greg0rT gregor.tudan@cofinpro.de

Cofinpro AG // 1 . 2

State of IT-SecurityState of IT-Security

Cofinpro AG // 1 . 3

Have I been pawned?Have I been pawned?

Cofinpro AG // 1 . 4

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

»Lege nicht alle Eier in einen Korb«— Sprichwort

Cofinpro AG // 1 . 6

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

Cofinpro AG // 1 . 6

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

OAuthOAuth

Cofinpro AG // 2 . 1

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

OAuth 2.0OpenID ConnectJSON Web-Tokens

•••

Cofinpro AG // 2 . 2

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

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

TokensTokens

Cofinpro AG // 2 . 5

Warum Tokens?Warum Tokens?entkoppeln Authentifizierung und Authorisierung

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

••••

Cofinpro AG // 2 . 6

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

Cofinpro AG // 2 . 7

OAuth FlowOAuth Flow

Browser

Client

Auth-ServerResource Server

Cofinpro AG // 2 . 8

KeycloakKeycloak

Cofinpro AG // 3 . 1

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

Integration mit KeycloakIntegration mit Keycloak

the cool stu�

Keycloak

SAML LDAP RDBMS OIDC

Cofinpro AG // 3 . 3

mehr als Loginmehr als LoginPassword vergessenRegistrierung

Email-VerifizierungTerms of Service

Account verwalten...

••

••

••

Cofinpro AG // 3 . 4

Custom ThemesCustom Themes

Cofinpro AG // 3 . 5

Admin UIAdmin UI

Cofinpro AG // 3 . 6

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

•••••••

Cofinpro AG // 3 . 7

AnwendungenAnwendungen absichernabsichern

Cofinpro AG // 4 . 1

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

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

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

•••••

Cofinpro AG // 4 . 4

WebanwendungenWebanwendungenAdapter installierenAdapter installieren

in Serververzeichnis entpacken oderDependency hinzufügen

••

Cofinpro AG // 4 . 5

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

WebanwendungenWebanwendungenClient konfigurierenClient konfigurieren

Cofinpro AG // 4 . 7

WebanwendungenWebanwendungenBerechtigungen konfigurierenBerechtigungen konfigurierenje nach Plattform

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

•••

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

Cofinpro AG // 4 . 8

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

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

OAuth-Code-Flow mit PKCE Extension

••

• Keyloak-Angular• React-Keycloak

Cofinpro AG // 4 . 10

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

Keycloak GatekeeperKeycloak Gatekeeper

Browser

Gatekeeper

Keycloak Application

Cofinpro AG // 4 . 12

Mobile AppsMobile Apps

Cofinpro AG // 4 . 13

Mobile AppsMobile Apps: OAuth 2.0 for Native AppsRFC-8252

Cofinpro AG // 4 . 14

Hybride Apps mit CordovaHybride Apps mit Cordova

Cofinpro AG // 4 . 15

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

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

Cordova In-Cordova In-App BrowserApp Browser

Cofinpro AG // 4 . 16

CordovaCordovaNativeNative

Cofinpro AG // 4 . 17

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

Cofinpro AG // 4 . 18

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

Cofinpro AG // 4 . 18

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

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

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

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

• App-Auth• AeroGear

Cofinpro AG // 4 . 19

Diskussion undDiskussion undFragenFragen

Cofinpro AG // 5 . 1

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