Keycloak als Identity Broker

9 Oktober 2018

Wie Keycloak als Identity Broker Unternehmen und Kunden die Onlinewelt vereinfacht

Keycloak im Produktivbetrieb als Identity Broker zwischen verschiedenen identitätsverwaltenden Systemen

Heute erwarten Kunden im e-Commerce mehr Bequemlichkeit als noch vor Jahren. Transaktionen über Internetportale wachsen stetig und erfordern umso mehr neue, digitale Lösungen.

Gerade bei einem einmaligen Kauf übers Internet, möchten Kunden nicht schon wieder einen neuen Account anlegen oder ein neues Passwort vergeben. Wie z.B. bei einem Online-Kauf eines Konzerttickets oder einer Fahrkarte oder der Einkaufsplanung im Supermarkt. Bei der Kaufland-App können sich Kunden aussuchen, ob sie sich mit ihrem Kundenkonto oder über soziale Netzwerke authentifizieren. Sogar die Deutsche Bank offeriert neuerdings einen Login über den Identity Provider Verimi, wenn die Bankkunden sich in ihr Konto einloggen möchten. Genau hier bietet sich der Einsatz eines Identity Brokers an, der mit einem oder verschiedenen Identity Providern kommuniziert.

Wie kann man sich die technische Umsetzung mit Keycloak vorstellen?
Wir, von der Login Alliance, befragen Hasebullah Ansari, denn er ist ein Experte auf diesem Gebiet. Er arbeitet bei der Syntlogo GmbH und beschäftigt sich seit mehr als 2 Jahren mit Keycloak. Sein letztes Projekt hat er bei der Deutschen Bahn durchgeführt.

Login Alliance: „Herr Ansari, wie stellt ein Unternehmen seine Anwendungen als Services im Web über einen Identity Broker zur Verfügung?“

Hasebullah Ansari: „Mit Keycloak ist das möglich. Die Open-Source-Lösung von Red Hat agiert hier als Identity Broker zwischen verschiedenen Identity Providern. Keycloak referenziert auf einen Account in einem Social Media Dienst (Soziale Netzwerke, wie Facebook, Google, Twitter, u.a.). Bzw. auf eine Drittressource, die OpenID Connect oder das SAML Protokoll unterstützt.

Das können gekaufte oder selbstentwickelte Anwendungen sein, aber auch ein LDAP-Verzeichnisdienst, ein Active Directory oder der Authentifizierungsdienst Kerberos. Dies nennt man dann User Federation. Wir sprechen hier von einer Förderierten Identität (Federated Identity), da die Identitätsinformationen immer bei der jeweiligen ursprünglichen Ressource verbleiben. Das bringt den großen Vorteil, dass ein Benutzer nicht bei jeder, initialen Authentifizierung einen neuen Account angelegen muss.“

Login Alliance: „Welche Möglichkeiten gibt es, wenn ein Benutzer auf mehrere Anwendungen eines Unternehmens zugreifen möchte, ohne dass er mehrfach Passwörter eingeben muss?“

Hasebullah Ansari: „Hier bieten sich folgende Optionen an:

Eine Keycloak SSO Implementierung zwischen verschiedenen Anwendungen.
Das Identity Brokering (über OIDC (OpenID Connect), SAML oder einem Account bei einem Sozialen Netzwerk).
Oder über eine User Federation (LDAP, Active Directory)“
Login Alliance: „Ist ein System dann nicht überfordert, wenn sehr viele Benutzer eine App gleichzeitig benutzen wollen?“

Hasebullah Ansari: „Natürlich ist es in so einem Fall notwendig eine Hochverfügbarkeit der Anwendung und von Keycloak zu gewährleisten (HA-Umgebung). Man kann dafür einen HA-Cluster mit mehreren Systemen einsetzen (Master-/Slave-Cluster). In Keycloak gibt es zwei Möglichkeiten für ein Cluster-Set-up: Zum einen den Standalone-HA Cluster Modus, zum anderen den Domain Clustered Modus.“

Unser Fazit: Moderne Systeme nutzen Keycloak als Identity Broker, um Endkunden die erneute Vergabe von Passwörtern oder das Anlegen eines neuen Accounts zu ersparen. Bestehende Konten bei Twitter, LinkedIn oder FaceBook können genutzt werden, um mittels Keycloak e-Commerce-Services einfach und komfortabel zu nutzen – eine ideale Lösung!

Keycloak

Keycloak ist eine Open-Source-Lösung für Identity und Access Management, die auf die Absicherung moderner Anwendungen und Services ausgerichtet ist. Keycloak macht es einfach, die Authentifizierung an Anwendungen und Diensten mit wenig bis gar keinem Code sicher zu implementieren.

Keycloak ist funktional sehr umfangreich, benutzerfreundlich, verfügt über eine leicht bedienbare Benutzeroberfläche und ist Multi-Mandanten fähig.

p

Was ist ein Identity Broker?

Ein Identity Broker ist ein Zwischendienst, der mehrere Dienstanbieter mit verschiedenen Identity Providern verbindet. Als Vermittlerdienst ist ein Identity Broker dafür verantwortlich, eine Vertrauensbeziehung mit einem externen Identity Provider aufzubauen, um über seine Identitäten auf interne Dienste zuzugreifen, die von Service Providern angeboten werden.

Aus Benutzersicht bietet ein Identity Broker eine benutzerorientierte und zentralisierte Möglichkeit, Identitäten über verschiedene Sicherheitsdomänen oder -bereiche hinweg zu verwalten. Er verknüpft ein bestehendes Konto mit einer oder mehreren Identitäten verschiedener Identity Provider oder erstellt sogar auf der Grundlage der von ihnen erhaltenen Identitätsinformationen ein neues Konto.

Ein Identity Provider basiert in der Regel auf einem bestimmten Protokoll. Dieses wird zur Authentifizierung und Kommunikation von Authentifizierungs- und Autorisierungsinformationen an ihre Benutzer eingesetzt. Es kann ein sozialer Anbieter wie Facebook, Google oder Twitter sein. Es kann ein Geschäftspartner sein, dessen Benutzer auf Ihre Dienste zugreifen möchten. Oder es handelt sich um einen Cloud-basierten Identity Service, den Sie integrieren möchten.

Identity Provider basieren in der Regel auf den folgenden Protokollen:

  • SAML 2.0
  • OAuth 2.0
  • OpenID Connect

Wie wird Keycloak als Identity Broker eingesetzt?

Wenn Keycloak als Identity Broker eingesetzt wird, sind Benutzer nicht gezwungen, ihre Anmeldeinformationen anzugeben, um sich in einem bestimmten Bereich zu authentifizieren. Stattdessen wird ihnen eine Liste von Identity Providern präsentiert, über die sie sich authentifizieren können.

Es besteht auch die Möglichkeit einen Standard Identity Broker zu konfigurieren. In diesem Fall erhält der Benutzer keine Auswahl, sondern wird direkt an den übergeordneten Broker weitergeleitet.

Das folgende Schaubild zeigt die erforderlichen Schritte, um Keycloak als Identity Broker einzusetzen:

  1. Der Benutzer ist nicht authentifiziert und fordert in einer Client-Anwendung eine geschützte Ressource an.
  2. Die Client-Anwendungen leiten den Benutzer zur Authentifizierung an Keycloak weiter.
  3. An dieser Stelle wird dem Benutzer die (Keycloak-)Anmeldeseite angezeigt, auf der es eine Liste der per REALM verfügbaren Identity Provider gibt.
  4. Der Nutzer wählt einen der Identity Provider aus, indem er auf die entsprechende Schaltfläche oder den entsprechenden Link klickt.
  5. Keycloak gibt eine Authentifizierungsanforderung an den jeweiligen Identity Provider weiter und fordert eine Authentifizierung an. Der Benutzer wird auf die Login-Seite des Identity Providers weitergeleitet. Die Verbindungseigenschaften und andere Konfigurationsoptionen für den Identity Provider wurden zuvor vom Administrator in der Keycloak Admin Console festgelegt.
  6. Der Benutzer stellt seine Zugangsdaten oder seine Zustimmung zur Verfügung, um sich über den Identity Provider zu authentifizieren.
  7. Bei einer erfolgreichen Authentifizierung durch den Identity Provider wird der Benutzer mit einer Authentifizierungsantwort zurück zu Keycloak geleitet. Normalerweise enthält diese Antwort einen Security Token. Keycloak setzt diesen ein, um der vom Identity Provider durchgeführten Authentifizierung zu vertrauen und Informationen über den Benutzer abzurufen.
  8. Keycloak prüft nun, ob die Antwort des Identity Providers gültig ist.
    – Ist sie gültig, wird ein neuer Benutzer importiert und erstellt oder einfach übersprungen, wenn der Benutzer bereits existiert.
    – Handelt es sich um einen neuen Benutzer, kann Keycloak den Identity Provider nach Benutzerinformationen fragen, falls diese nicht bereits im Token vorhanden sind (Identity Federation).
    – Existiert der Benutzer bereits, kann Keycloak ihn bitten, die vom Identity Provider zurückgegebene Identität mit seinem bestehenden Konto zu verknüpfen (Verknüpfung von Konten).
  9. Der Workflow ist frei konfigurierbar. Am Ende dieses Schrittes authentifiziert Keycloak den Benutzer und gibt einen eigenen Token aus, um auf die angeforderte Ressource des Dienstanbieters zuzugreifen.
  10. Sobald der Benutzer lokal authentifiziert ist, leitet Keycloak ihn an den Dienstanbieter weiter, indem er den zuvor bei der lokalen Authentifizierung ausgegebenen Token sendet.
  11. Der Dienstanbieter erhält den Token von Keycloak und erlaubt den Zugriff auf die geschützte Ressource.

Quelle: keycloak.org