Identität & Zugriff · Grundlagen

Keycloak — Identität & Zugriff selbst hosten

Fast jede Anwendung braucht eine Anmeldung — und viel zu oft baut jede ihre eigene. Keycloak macht daraus eine zentrale Identität: ein Login für alle Dienste (SSO), zentral erzwungene Zwei-Faktor-Anmeldung (MFA) und ein Ort für Nutzer und Rollen. Diese Schulung zeigt, wie du Keycloak selbst hostest, eine App absicherst und den Betrieb aufsetzt. Dein Fortschritt wird lokal gespeichert.

Worum geht's?

Keycloak ist ein quelloffenes Identity- und Access-Management-System (IAM) — ein Identity Provider. Statt dass jede Anwendung eigene Nutzer, Passwörter und Reset-Flows pflegt, delegieren alle Apps die Anmeldung an Keycloak. Das ergibt Single Sign-On, zentrale MFA und ein sauberes Offboarding: einmal deaktivieren sperrt überall.

Diese Schulung führt dich von null: was Keycloak ist → warum zentrale Identität → die Grundbegriffe (Realm, Client, Token) → Keycloak per Docker selbst starten → eine App per OIDC anbinden → Nutzer, Rollen & MFA verwalten → ein echtes Praxisbeispiel (AuxData) → bis zu Betrieb und Härtung für die Produktion.

Selbstlern-Kurs zum Durchklicken — dein Fortschritt wird lokal gespeichert.

? Für wen ist das interessant?

Für alle, die mehrere Dienste betreiben und die Anmeldung nicht länger pro App neu erfinden wollen.

🧑‍💻
Entwickler & Self-Hoster
Eigene Apps und Dienste mit einem sauberen, standardkonformen Login absichern.
🏢
Kleine Teams & Firmen
Ein Konto pro Person für alle internen Tools — inklusive MFA und Offboarding.
🔒
Sicherheits-Bewusste
MFA zentral erzwingen, kurze Token-Laufzeiten, Brute-Force-Schutz an einem Ort.
🇪🇺
Souveränitäts-Interessierte
Quelloffen und EU-selbst-hostbar — kein Lock-in bei Auth0, Okta oder Azure AD.
💡 Voraussetzung Docker: Keycloak startest du am bequemsten als Container. Ein Grundverständnis von Docker hilft — falls neu, geht es hier entlang: Docker-Schulung. Für die Grundbegriffe reicht Lesen; ab Stufe 4 startest du selbst.

🗺️ Die 8 Stufen

Keine tiefen Vorkenntnisse nötig. Ein Terminal und etwas Docker-Grundlage genügen (siehe Docker). Die Stufen 1–3 sind reines Verstehen; ab Stufe 4 baust du mit.
Stufe 1

Was ist Keycloak?

Das mentale Modell: vom Login-Chaos zu einem zentralen Ort für Anmeldung, Nutzer und Rechte.

1 Jede App ihr eigenes Login = Chaos

Stell dir vor, du betreibst drei Dienste: einen Shop, ein Analytics-Tool und ein Support-Portal. Baut jeder sein eigenes Login, hat jeder seine eigene Nutzer-Datenbank, eigene Passwörter, eigene „Passwort vergessen"-Abläufe.

Das Ergebnis: Passwort-Wildwuchs, kein Überblick, wer eigentlich Zugriff hat — und ein mühsames Offboarding, weil du eine ausscheidende Person in jedem System einzeln deaktivieren musst (und garantiert eins vergisst).

2 Keycloak = ein zentraler Identity-Provider

Keycloak ist ein quelloffenes IAM-System: ein Ort für Anmeldung, Nutzer, Rollen und Tokens. Deine Apps verwalten keine Passwörter mehr selbst — sie delegieren die Anmeldung an Keycloak und bekommen zurück, wer sich angemeldet hat und was er darf.

Vorher / Nachher — Skizze
Skizze
Links verwaltet jede App ihre eigenen Nutzer und Passwörter. Rechts zeigen alle Apps auf ein zentrales Keycloak — eine Identität, ein Anmeldefenster, ein Ort für Rechte.

3 Wofür Keycloak nicht da ist

Keycloak ist ein Baustein, kein Alleskönner — und grenzt sich klar von seinen Nachbarn ab:

Keycloak ist kein Reverse Proxy (das erledigt z. B. Nginx/Traefik), keine Datenbank (Keycloak braucht selbst eine, siehe Stufe 8) und keine Container-Runtime (das ist Docker). Es kümmert sich ausschließlich um Identität und Zugriff — die Nachbar-Bausteine lernst du in den Docker- und Self-Hosting-Schulungen.

✓ Geschafft, wenn Du …

Stufe 2

Warum zentrale Identität?

Was du konkret gewinnst, wenn eine Identität alle Dienste bedient — und warum du Auth nicht selbst bauen solltest.

1 Die vier großen Vorteile

Ein zentraler Identity-Provider zahlt sich sofort aus:

🎯
Single Sign-On
Einmal anmelden, alle angebundenen Dienste offen — kein Passwort-Jonglieren mehr.
🔐
MFA zentral
Zwei-Faktor-Anmeldung an einer Stelle erzwingen — gilt automatisch für alle Apps.
👥
Ein Ort für Nutzer
Nutzer, Rollen und Gruppen zentral pflegen, statt in jedem System einzeln.
🚪
Sauberes Offboarding
Einmal deaktivieren sperrt den Zugang überall auf einmal — nichts wird vergessen.

2 Offene Standards statt Eigenbau

Keycloak spricht OIDC / OAuth2 (das Web-Standardpaar für moderne Apps) und SAML (im Enterprise-Umfeld verbreitet). Damit bindet sich fast jedes Tool an. Auth selbst zu bauen klingt einfach, geht aber fast immer schief:

✗ Auth selbst bauen
  • Passwort-Hashing korrekt umsetzen
  • Sessions, Cookies, Token-Ablauf
  • „Passwort vergessen", Verifizierung
  • Brute-Force-Schutz, Rate-Limits
  • MFA, SSO — alles von Hand
✓ Keycloak nutzen
  • erprobte, standardkonforme Umsetzung
  • OIDC/OAuth2 & SAML eingebaut
  • MFA, Passwort-Policies, Reset dabei
  • Brute-Force-Schutz an Bord
  • deine App kümmert sich nur ums Fachliche
💡 Souveränität: Keycloak ist quelloffen und lässt sich vollständig in der EU selbst hosten. Deine Identitätsdaten — mit die sensibelsten überhaupt — bleiben im Haus, ohne Lock-in bei Auth0, Okta oder Azure AD.

✓ Geschafft, wenn Du …

Stufe 3

Grundbegriffe: Realm, Client, Token

Die fünf Wörter, die in jeder Keycloak-Anleitung auftauchen — einmal sauber erklärt, mit Analogien.

1 Die fünf Kernbegriffe

🏛️
Realm
Ein abgeschotteter Mandant/Bereich mit eigenen Nutzern, Rollen und Clients. Analogie: ein eigenes Gebäude — z. B. ein Realm pro Kunde oder je Produktion und Entwicklung.
📱
Client
Eine Anwendung, die Keycloak zur Anmeldung nutzt. Analogie: eine Tür im Gebäude, die aufs zentrale Schloss vertraut.
🙋
User
Eine Person mit einem Konto im Realm. Analogie: der Mensch mit dem Ausweis.
🎓
Rolle / Gruppe
Ein Bündel von Rechten. Rollen sagen „darf X", Gruppen bündeln Nutzer, um Rollen bequem zuzuweisen.
🎟️
Token
Ein JWT (signiertes Ticket). Analogie: der Stempel „ich bin angemeldet und darf X", den die App prüft.

2 Ein Realm hält alles zusammen

Ein Realm kapselt eine Umgebung komplett: seine Nutzer, seine Clients, seine Rollen. Zwei Realms wissen nichts voneinander — perfekt, um Kunden oder Prod/Dev sauber zu trennen.

Realm „nordwerk" — Skizze
Skizze
Users, Clients und Roles leben innerhalb eines Realms. Ein zweiter Realm hätte seine eigenen — komplett getrennt.

3 Wie es zusammenhängt

Die Begriffe greifen bei jeder Anmeldung ineinander:

  1. Ein User öffnet einen Client (eine App) innerhalb eines Realms.
  2. Er meldet sich bei Keycloak an — Keycloak prüft Passwort und, falls verlangt, den zweiten Faktor.
  3. Keycloak stellt ein Token aus, das die Rollen des Users trägt.
  4. Die App liest das Token und weiß: wer das ist und was er darf.
💡 Merke: Das Token ist der rote Faden. Es beweist die Identität und transportiert die Rechte — die App muss selbst nie ein Passwort sehen.

✓ Geschafft, wenn Du …

Stufe 4

Keycloak selbst starten

Vom Reden zum Machen: Keycloak per Docker starten, die Admin-Console öffnen und den ersten Realm anlegen.

1 Per Docker in einer Minute

Für die ersten Schritte reicht der eingebaute Entwicklungsmodus. Ein einziger Befehl holt das Image und startet Keycloak auf Port 8080:

1Keycloak im Dev-Mode starten
docker run --name keycloak -p 8080:8080 \
  -e KC_BOOTSTRAP_ADMIN_USERNAME=admin \
  -e KC_BOOTSTRAP_ADMIN_PASSWORD=<dein-admin-passwort> \
  quay.io/keycloak/keycloak:26.7 start-dev
start-dev nutzt unsichere Defaults und eine eingebaute Dev-Datenbank — perfekt zum Lernen, aber nie in Produktion (das kommt in Stufe 8). Der Bootstrap-Admin wird nur beim allerersten Start angelegt.
Versionsstand: Keycloak v26.x · Stand Juli 2026. Container-Tag (26.7) und die Env-Namen ändern sich zwischen Major-Versionen — in v26 heißen sie KC_BOOTSTRAP_ADMIN_USERNAME/…_PASSWORD (früher KEYCLOAK_ADMIN/KEYCLOAK_ADMIN_PASSWORD), eine häufige Fehlerquelle bei Upgrades.

2 Admin-Console öffnen

Ist der Container hochgefahren, öffnest du im Browser http://localhost:8080/Administration Console und meldest dich mit admin und deinem Passwort an.

localhost:8080 — Admin-Console (Skizze)
Skizze
Nach der Anmeldung landest du im Admin-Bereich. Oben links wählst du den aktiven Realm — anfangs nur master (der Verwaltungs-Realm; dort lebt der Admin, aber keine echten Apps).

3 Ersten Realm anlegen

Den master-Realm lässt du in Ruhe — für deine Apps legst du einen eigenen an. Wir nennen ihn durchgängig nordwerk (ein fiktives Demo-Projekt):

  1. Oben links auf den Realm-Umschalter klicken → Create realm.
  2. Als Realm name nordwerk eintragen → Create.
  3. Fertig — der Umschalter zeigt jetzt nordwerk als aktiven Realm. Alles, was du ab hier anlegst (Clients, Nutzer, Rollen), lebt in diesem Realm.
💡 Ein Realm pro Umgebung ist gute Praxis: nordwerk für Produktion, ein zweiter nordwerk-dev zum Ausprobieren — beide komplett getrennt. Docker als Unterbau ist Voraussetzung; falls neu, hilft die Docker-Schulung.

✓ Geschafft, wenn Du …

Stufe 5

Eine App anbinden (OIDC)

Der Kern: einen Client anlegen, den Login-Flow verstehen — und auch Dienste ohne eigenes OIDC absichern.

1 Einen Client anlegen

Jede App, die sich über Keycloak anmelden soll, ist ein Client. Im Realm nordwerk legst du für unsere Demo-App einen an:

  1. Clients → Create client. Client type: OpenID Connect. Client-ID: nordwerk-app.
  2. Capability config: Standard flow aktiviert (das ist der Authorization-Code-Flow). Für serverseitige Apps zusätzlich Client authentication an → es entsteht ein Client-Secret.
  3. Login settings → Valid redirect URIs: https://app.nordwerk.example/oauth2/callback eintragen — nur an diese URL schickt Keycloak den User zurück.
  4. Speichern, dann unter Credentials das Client-Secret kopieren (Platzhalter: <client-secret>) — die App braucht es für den Token-Tausch.
⚠ Die Redirect-URI ist ein Sicherheitsanker: Keycloak leitet nur an exakt hinterlegte URLs zurück. Ein offener Platzhalter hier wäre eine Einladung für Angreifer.

2 Der Login-Flow (Authorization Code)

Was beim Klick auf „Anmelden" wirklich passiert — der Nutzer tippt sein Passwort nur bei Keycloak ein, nie bei der App:

OIDC Authorization Code Flow — Skizze
Skizze
Die App schickt den User zu Keycloak (Redirect). Nach erfolgreicher Anmeldung kommt der User mit einem kurzlebigen Autorisierungscode zurück, den die App serverseitig gegen ein Token tauscht — das Passwort sieht die App nie.

3 Apps ohne eigenes OIDC: oauth2-proxy

Dienste mit nativem OIDC (Grafana, GitLab, …) binden direkt an — Client anlegen, Werte eintragen, fertig. Ein Dienst ohne eigenes OIDC bekommt einen kleinen Türsteher davor: oauth2-proxy übernimmt die Anmeldung und lässt nur eingeloggte Nutzer durch.

1oauth2-proxy vor einen Dienst schalten
oauth2-proxy \
  --provider=oidc \
  --oidc-issuer-url=https://auth.nordwerk.example/realms/nordwerk \
  --client-id=nordwerk-app \
  --client-secret=<client-secret> \
  --upstream=http://localhost:3000 \
  --redirect-url=https://app.nordwerk.example/oauth2/callback
Muster: Der Proxy sitzt vor dem --upstream-Dienst, erzwingt den Keycloak-Login und reicht nur authentifizierte Anfragen weiter. So sicherst du selbst uralte Tools ab, die von OIDC noch nie gehört haben.

✓ Geschafft, wenn Du …

Stufe 6

Nutzer, Rollen & MFA

Der Alltag: Nutzer und Gruppen pflegen, Rechte über Rollen verteilen und die zweite Sicherheitsstufe zentral erzwingen.

1 Nutzer, Gruppen, Rollen

Im Realm nordwerk baust du deine Rechtestruktur — am besten über Gruppen, damit du Rollen nicht an jede Person einzeln hängen musst:

  1. Users → Add user: Person anlegen (E-Mail, Name), dann unter Credentials ein erstes Passwort setzen (gern als „temporär", damit es beim ersten Login gewechselt wird).
  2. Realm roles → Create role: Rollen definieren, z. B. admin und mitarbeiter.
  3. Groups → Create group: Gruppen wie Team-Nordwerk anlegen und der Gruppe die passenden Rollen zuweisen.
  4. Nutzer in Gruppen stecken — die Rollen erben sie automatisch. Neue Person? Einfach in die richtige Gruppe.

2 MFA erzwingen

Die zweite Sicherheitsstufe (Multi-Faktor) richtest du zentral ein — sie gilt dann für alle angebundenen Apps auf einmal:

  1. Authentication → Required actions: Configure OTP als Default aktivieren — jeder Nutzer muss beim nächsten Login einen zweiten Faktor einrichten.
  2. Die Person scannt beim Login einen QR-Code mit einer Authenticator-App (TOTP) und gibt ab dann zusätzlich den 6-stelligen Code ein.
  3. Alternativ per Policy für bestehende Nutzer nachziehen — so wird MFA für alle verpflichtend.
💡 Warum zentral besser ist: Eine Policy in Keycloak statt MFA-Gefrickel in jeder App einzeln. Eine Regel — überall gültig, überall gleich stark.

3 Passwort-Policies & Login-Theme

🔑
Passwort-Policy
Unter Authentication → Policies Mindestlänge, Komplexität und Ablauf festlegen — realm-weit gültig.
🎨
Login-Theme
Die Anmeldeseite lässt sich mit einem eigenen Theme an dein Branding anpassen — Logo, Farben, Texte.

✓ Geschafft, wenn Du …

Stufe 7

Praxis: So nutzt AuxData Keycloak

Dieselben Bausteine wie in den Stufen 1–6 — nur in einem echten, produktiven Produkt.

1 AuxData meldet dich über Keycloak an

Die AuxData-Plattform nutzt Keycloak als Identity-Provider: Die Anmeldeseite, die du bei AuxData siehst, wird von Keycloak bereitgestellt. Es kümmert sich um die Authentifizierung, die Passwortregeln, MFA und SSO — genau die Rolle, die du in dieser Schulung kennengelernt hast.

AuxData-Login (via Keycloak) — Skizze
Skizze
Die Anmeldemaske stammt von Keycloak, nicht von der AuxData-Anwendung selbst. Passwortregeln, zweiter Faktor und der Microsoft-Button laufen alle über den Identity-Provider.

2 MFA-Pflicht & SSO mit Microsoft

🔐
MFA-Pflicht
TOTP (Authenticator-App) lässt sich über Keycloak für alle Nutzer verpflichtend erzwingen — genau wie in Stufe 6.
🪟
„Mit Microsoft anmelden"
Keycloak sitzt als Vermittler zwischen AuxData und Microsoft — Nutzer melden sich mit ihrem bestehenden Firmenkonto an (SSO).

3 API per Bearer-Token

Nicht nur die Weboberfläche, auch die REST-API von AuxData wird über Keycloak abgesichert: Anfragen tragen ein JWT-Bearer-Token, das aus dem Login stammt — dasselbe Token-Prinzip aus Stufe 3.

1API-Aufruf mit Keycloak-Token
GET /api/v1/... HTTP/1.1
Host: auxdata.example
Authorization: Bearer <token>
Die API prüft das Bearer-Token (Signatur, Ablauf, Rechte) — kein Passwort im Spiel, nur das signierte Ticket. So sichern sich Weboberfläche und API mit demselben Baustein ab.
Dieselben Bausteine wie in Stufen 1–6, nur produktiv: Identity-Provider, MFA, SSO, Token — was du hier gelernt hast, steckt 1:1 in einem echten Produkt.

Beispiel gemäß AuxData-Benutzer- und Administratorhandbuch.

✓ Geschafft, wenn Du …

Stufe 8

Betrieb & Härtung

Vom Dev-Spielplatz zum verlässlichen Dienst: eigene Datenbank, HTTPS, Backups und die wichtigsten Sicherheits-Basics.

1 Raus aus dem Dev-Mode

Der Start aus Stufe 4 war start-dev — für die Produktion nimmst du start und gibst Keycloak eine eigene Datenbank (z. B. Postgres), damit deine Realms und Nutzer dauerhaft sicher liegen:

1Produktiver Start mit Postgres
docker run --name keycloak -p 8080:8080 \
  -e KC_BOOTSTRAP_ADMIN_USERNAME=admin \
  -e KC_BOOTSTRAP_ADMIN_PASSWORD=<dein-admin-passwort> \
  -e KC_DB=postgres \
  -e KC_DB_URL=jdbc:postgresql://db:5432/keycloak \
  -e KC_DB_USERNAME=keycloak \
  -e KC_DB_PASSWORD=<db-passwort> \
  quay.io/keycloak/keycloak:26.7 start
start statt start-dev schaltet die Produktions-Defaults scharf. KC_DB=postgres plus KC_DB_URL, User und Passwort binden die externe Datenbank ein — die eingebaute Dev-DB ist für echten Betrieb tabu.

2 HTTPS, Backups, Updates

  1. HTTPS über einen Reverse Proxy: Keycloak hinter einen Proxy stellen, KC_HOSTNAME auf deine Domain setzen und mit --proxy-headers xforwarded starten. Keycloak nie nur über HTTP öffentlich erreichbar machen — Einrichtung siehe Self-Hosting & VPS.
  2. Backups: die Datenbank regelmäßig sichern und die Realms als Datei exportieren (nächster Block).
  3. Updates: vor Major-Upgrades die Changelogs lesen — Env-Variablen und Optionen brechen zwischen Major-Versionen gelegentlich.
2Realm als Backup exportieren
# Realm „nordwerk" als JSON sichern
docker exec -it keycloak /opt/keycloak/bin/kc.sh export \
  --dir /tmp/export --realm nordwerk
Der Realm-Export ergänzt das DB-Backup: So kannst du eine Konfiguration reproduzieren oder in eine neue Umgebung ziehen.

3 Sicherheits-Basics + Ausblick

🛡️
Admin absichern
Starkes Admin-Passwort, besser noch ein eigener Admin-User statt des Bootstrap-Kontos.
🚫
Brute-Force-Schutz
In den Realm-Settings die Brute-Force-Protection einschalten — sperrt nach zu vielen Fehlversuchen.
⏱️
Kurze Token-Laufzeiten
Access-Tokens kurzlebig halten — ein geleaktes Token ist dann schnell wertlos.
🔭 Ausblick: Über OIDC hinaus kann Keycloak SAML und Identity-Federation — z. B. Nutzer aus einem bestehenden LDAP / Active Directory anbinden. Für den Einstieg brauchst du das nicht, aber es ist gut zu wissen, dass es da ist.

✓ Geschafft, wenn Du …

🎓 Geschafft! Du verstehst Keycloak von der Idee bis zum produktiven Betrieb. Mach jetzt das Quiz für dein Zertifikat.
Lernkontrolle

Quiz

7 Fragen quer durch die Keycloak-Stufen. Ab 6 richtigen Antworten schaltest du dein Zertifikat frei.

Frage 1 von 7
Abschluss

Dein Zertifikat

Glückwunsch! Trage deinen Namen ein und drucke das Zertifikat (oder speichere als PDF).

FL
Florian Ludwig
AI Consultant · Kutzschbach INNOVATIONS
Zertifikat
Keycloak — Identität & Zugriff selbst hosten
Hiermit wird bestätigt, dass
Dein Name hier
den Workshop „Keycloak — Identität & Zugriff selbst hosten" erfolgreich abgeschlossen hat.
Datum
GEPRÜFT
Florian LudwigAI Consultant · Kutzschbach INNOVATIONS