Cloak and Dagger Stories - entwicklertag.de fileWarum sichere Anmeldung schwer ist: Provider bauen...
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
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