Keycloak ist ein Open-Source-Identitätsanbieter. Du kannst mit minimalem Aufwand Authentifizierung zu Anwendungen und sicheren Diensten hinzufügen. Dabei musst du dich nicht mit der Speicherung oder der Authentifizierung von Benutzern befassen. Keycloak bietet eine Benutzer-Föderation, starke Authentifizierung, Benutzerverwaltung, feingranulare Autorisierung und mehr. ~ Keycloak
In diesem Blogpost werde ich meinen Lernweg zu Keycloak und die Ressourcen, die mir auf diesem Weg geholfen haben, mit dir teilen. Vielleicht hilft dir auch das von mir verwendete Material, Identity and Access Management (IAM) und Keycloak zu verstehen.
Es hat mich einige Zeit gekostet, Keycloak zu erlernen und in Gang zu bringen. Ich bin wenig vertraut mit dem Java-Ökosystem, da seit meinem letzten Java-Projekt einige Zeit vergangen ist. Daher fiel mir das Lernen vielleicht etwas schwerer. Wenn du aber ein routinierter Java-Entwickler bist, hast du Glück, denn Keycloak ist in Java geschrieben. Ich möchte darauf hinweisen, dass ich noch nicht alles erlernt habe, aber ich fühle mich sicher bei der Bereitstellung, Erweiterung und Integration von Keycloak.
Einstieg in Keycloak
Meine Keycloak-Reise begann in einem Kundenprojekt, in dem wir ein Log-in Theme für Keycloak gebaut und in unsere Frontend-Anwendungen integriert haben. Sicherlich ist es nur eine kleine Teilmenge dessen, was Keycloak zu bieten hat, aber die anfänglichen Ressourcen sind ein guter Ausgangspunkt für jeden. Nach einem ersten Besuch der Website, um einige grundlegende Informationen zu finden, zeigen folgende zusätzliche Videos kompakt die Leistungsfähigkeit von Keycloak:
- Securing apps and services with Keycloak authentication | DevNation Tech Talk von Stian Thorgersen (Keycloak Project Lead)
- How to secure your Spring apps with Keycloak von Thomas Darimont @ Spring I/O 2019 von Thomas Darimont (Keycloak Maintainer)
Ressourcen jenseits der Keycloak-Doku: Was ist IAM?
Ich habe eine interessante Beobachtung bei mir selbst gemacht: Als ich mit Keycloak anfing, war die offizielle Dokumentation überhaupt nicht hilfreich. Zum Glück hat sich das geändert, und jetzt finde ich die Dokumentation ganz anständig. Kollegen, die ebenfalls mit Keycloak in Kontakt kamen, hatten das gleiche Problem. Ich lernte, meine seltsame Beziehung zur Keycloak-Dokumentation entstand aufgrund einer Lücke zwischen meinem Wissen und den Informationen die die Dokumentation bereitstellt. Die Dokumentation erklärt nicht, was IAM oder OpenID Connect ist und wie es intern funktioniert. Das wird vorausgesetzt.
Ich habe gelernt: Es gibt den IAM-Sektor und Keycloak als Produktlösung. Die Keycloak-Dokumentation konzentriert sich auf die wichtigsten Teile der Bereitstellung, Verwaltung und Anpassung von Keycloak. Es wird erwartet, dass einem die IAM-Grundlagen und die Funktionsweise der entsprechenden Protokolle geläufig sind. Für viele (mich eingeschlossen), die in Keycloak einsteigen, ist das wahrscheinlich nicht der Fall. Bevor die Keycloak-Dokumentation also eine Hilfe für uns ist, müssen wir zunächst Grundwissen über IAM aufbauen.
Wenn du vor demselben Problem stehst, ist es vielleicht eine gute Idee, einen Schritt zurückzugehen und sich auf die Grundlagen von IAM zu konzentrieren, bevor wir tiefer in Keycloak einsteigen. Es ist sinnvoll, sich über den IAM-Sektor im Allgemeinen zu informieren, aber sich auch mit den Protokollen vertraut zu machen, die wir verwenden möchten. In meinem Fall sind das hauptsächlich OAuth2 und OpenID Connect (OIDC).
Das wirft die Frage auf, worum es bei IAM eigentlich geht. RedHat (der Sponsor von Keycloak) hat einen guten Artikel, der den IAM-Kontext beschreibt:
Identitäts- und Zugriffsmanagement (IAM) ist eine zentralisierte und konsistente Methode zur Verwaltung von Benutzeridentitäten (d. h. Personen, Dienste und Server) zur Automatisierung von Zugriffskontrollen und zur Erfüllung von Compliance-Anforderungen in herkömmlichen und containerisierten Umgebungen. ~What is identity and access management (IAM)?
Es gibt eine großartige Ressource, die die Lücke zwischen dem Erlernen der Grundlagen und dem Erlernen von Keycloak überbrückt. Stian, der Ersteller von Keycloak, hat letztes Jahr ein Buch über Keycloak geschrieben. Ich finde, dieses ist der perfekte Startpunkt. Er erklärt die Grundlagen des OpenID-Connect-Protokolls und zeigt, wie es mit Keycloak benutzt wird. Darüber hinaus erklärt er eine Menge Funktionen von Keycloak in kurzen Abschnitten. Es verschafft uns einen guten Überblick, welche Funktionalitäten Keycloak alles bietet. Von dort aus können wir die Funktionen auswählen, die den Anforderungen unserer Projekte entsprechen. Nun können wir zur Keycloak-Dokumentation springen, um einen tieferen Einblick in die Verwendung der einzelnen Funktionen zu erhalten.
Eine Anmerkung beim Lesen des Buches: OAuth2 – die Grundlage von OpenID Connect – ist nicht der Schwerpunkt des Buches. Es deckt die Grundlagen ab, aber in meinem Fall war es nicht ganz ausreichend. Ich empfehle dir daher, dich während dem Lesen des Buches nach Blogartikeln umzusehen, die sich eingehender mit OAuth2 befassen.
Lernen von alten Keycloak-Hasen
Glücklicherweise haben wir bei codecentric einige sehr talentierte Leute, die Experten für IAM und Keycloak sind (Sebastian Rose und Thomas Darimont, euch meine ich!). Sie um sich zu haben und die Möglichkeit, sie alles fragen zu können und von ihrer Erfahrung zu lernen, die sie in vielen Kundenprojekten gesammelt haben, hat meinen Lernprozess sehr gefördert!
Ich hatte die Möglichkeit, an einem Keycloak Fundamentals-Workshop von Arne Strathmann teilzunehmen. Hier haben wir die Grundlagen von Keycloak besprochen und mit dem (inzwischen veralteten) JBoss CLI zur Konfiguration von Keycloak gearbeitet. Danach haben wir es in andere Anwendungen integriert.
Einige Zeit später nahm ich an einem Meetup teil, bei dem Thomas erklärte, wie man Keycloak erweitern kann. Neben einer großartigen Präsentation mit guten einfachen Beispielen und vielen Learnings aus seiner Erfahrung gab es für mich noch mehr mitzunehmen: Kürzlich hat Thomas ein Keycloak Starter Repository erstellt. Dies ist ein großartiger Ausgangspunkt oder sogar ein Standard-Repository, um ein neues Keycloak-Projekt zu starten. Als er es vorstellte, war das Repository noch recht neu und hatte eine kleine Basis. Ich benutzte diese Vorlage für mein eigenes Keycloak-Setup. Im Laufe der Jahre hat dieses Repo eine Menge weiterer Konfigurationsoptionen erhalten. Es ist toll, dass man dort so viele funktionierende Kombinationen finden kann. Wenn man mit Keycloak anfängt, kann es sinnvoll sein, einige der ersten Commits im Repo zu verwenden. Dort gibt es nur ein Setup in einer einfacheren Form. Wenn du dann bereit bist, Keycloak in größerem Umfang einzusetzen, könnten die letzten Updates für dich interessant sein.
Eine andere Sache, die ich gefunden habe, ist das Keycloak-Repository mit Erweiterungen von Thomas. Er hat eine ganze Reihe von Keycloak-Erweiterungen entwickelt. Vielleicht ist die Erweiterung, die du entwickeln willst, bereits vorhanden! Ich habe eine Menge hilfreicher Extensions gefunden, und es war eine großartige Inspirationsquelle für meine eigenen Erweiterungen.
Ich würde dir auch empfehlen, den Keycloak-Blog im Auge zu behalten. Es gibt nicht viele Blog-Einträge, aber neue Artikel liefern immer sehr hilfreiche Informationen! Zum Beispiel wurde im Dezember letzten Jahres eine Sicherheitslücke in einem Blogeintrag bekanntgegeben.
Erste Gehversuche
Ausgestattet mit all dem Gelernten begann ich, eigene Erfahrungen mit der Erstellung eines eigenen Keycloak-Docker-Images zu sammeln. Mit einer Basisinfrastruktur, die ich auf AWS erstellt habe (mit VPC, ELB, ECS Fargate, RDS und SES), konnte ich mein Image bereitstellen und ausführen. Inzwischen gibt es auch einige Open-Source-Ressourcen für Keycloak in der AWS-Infrastruktur: cdk-keycloak. Nachdem die Bereitstellung abgeschlossen war, begann ich mit der Konfiguration von Keycloak. Diese Konfiguration reicht von der Erstellung des Realms und dem Hinzufügen von Clients über die Konfiguration von Log-Einstellungen, Plugins und Realm-Einstellungen bis hin zur Bereitstellung des Login-Flows und Token-Inhalts. Diese Konfiguration muss auf einer laufenden Keycloak-Instanz durchgeführt werden. Wir können sie entweder über die mitgelieferte Admin UI oder die CLI vornehmen. Da beide Optionen etwas umständlich sind, habe ich die keycloak-config-cli verwendet. Sie bietet Konfiguration als Code über YAML- oder JSON-Konfigurationsdateien für Keycloak und funktioniert hervorragend.
Und das ist auch schon alles.
Wenn du Terraform verwendest, um die Infrastruktur für Keycloak zu erstellen, gibt es die Option, Keycloak mit Terraform zu konfigurieren: Keycloak-Konfiguration mit Terraform
Fazit
Zunächst schien Keycloak kompliziert und starr zu sein. Aber als ich mich näher mit Keycloak beschäftigte, stellte ich fest, dass es viel zu bieten hat. Es gibt extrem viele Konfigurationsmöglichkeiten, und es ist leicht erweiterbar.
Aber ich habe auch gelernt, dass die Integration von Keycloak in eine Anwendungslandschaft mit versteckten Kosten verbunden ist. Die Wartung eines Keycloak-Clusters in Produktion erfordert einiges an Aufwand. Die korrekten Einstellungen und die Durchführung von Updates mit minimalen Auswirkungen auf die Benutzer sind nicht trivial. Bevor du dich also auf Keycloak stürzt, nur weil es kostenlos erscheint, würde ich diese Entscheidung noch einmal hinterfragen.
In letzter Zeit ist viel Wettbewerb im IAM-Sektor entstanden. Einige Player bieten neben einem Open-Source-Kern auch SaaS-Angebote an. Andere Anbieter stellen wiederrum eine gehostete Keycloak-Lösung zur Verfügung. Managed Services haben den Vorteil, dass wir uns auf die Entwicklung und Auslieferung unseres Produkts konzentrieren können.
Das Team hinter Keycloak hat verstanden, dass sich die IAM-Landschaft weiterentwickelt. Stian hat im Keycloak.X-Update – siehe auch den Blogpost von Thomas und Sebastian zu Keycloak.X – einige Einblicke in die Roadmap gegeben. Man hat das Gefühl, dass sie einige der scharfen Kanten von Keycloak angehen und verbessern. Das sind gute Neuigkeiten, und ich bin zuversichtlich, dass die Arbeit mit Keycloak in Zukunft einfacher sein wird. Es ist jedoch wichtig zu wissen, dass dies einige Zeit in Anspruch nehmen wird und zu einigen Umstellungen für derzeit laufende Keycloak-Cluster führen wird.
Ich bin gespannt, welches Tool das Rennen machen und den Markt in Zukunft dominieren wird. Insgesamt ist Keycloak immer noch ein sehr stabiler Identitätsanbieter, der von einer Menge großer Unternehmen genutzt wird.
Ich hoffe, ich konnte dir einige hilfreiche Ideen und Ressourcen für das Erlernen von Keycloak an die Hand geben.
Bis dann! ✌️
Weitere Beiträge
von Florian Wiech
Dein Job bei codecentric?
Jobs
Agile Developer und Consultant (w/d/m)
Alle Standorte
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Gemeinsam bessere Projekte umsetzen.
Wir helfen deinem Unternehmen.
Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.
Hilf uns, noch besser zu werden.
Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.
Blog-Autor*in
Florian Wiech
IT Consultant
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.