•15 min read

Keycloak Architektur & Funktionsweise im AI Tech Stack

In unserer fortlaufenden Beitragsreihe zur systematischen Konzeption und ingenieurwissenschaftlichen Realisierung souveräner Unternehmens-KI haben wir die funktionalen Kernkomponenten moderner Plattformen schrittweise analysiert: Ausgehend vom standardisierten Open-Source Agentic AI Tech Stack untersuchten wir das mathematisch formalisierte sitzungsübergreifende Langzeitgedächtnis via Mem0, die kontinuierliche Wissensevolution via WikiSkill, die Body-Brain-Entkopplung und Bounded-Memory-Laufzeit des Hermes Agent, die kollaborative Human-in-the-Loop Interaktionsschicht via Open WebUI sowie das universelle Modell-Routing, Caching und Inferenz-Gateway via LiteLLM.

Bereits in unseren Grundlagenarbeiten zu lokalen KI-Agenten und strukturierter Inferenz und den Architekturleitlinien von Mindful IT und Calm Computing wurde ein fundamentales Postulat hervorgehoben: Je mehr Autonomie, Werkzeugzugriff und Handlungskompetenz softwarebasierten KI-Agenten eingeräumt wird, desto strikter und kompromissloser müssen Identitäts-, Authentifizierungs- und Autorisierungsgrenzen an jedem Perimeter des Systems gezogen werden.

In vielen heutigen Pilotprojekten und unreflektierten Enterprise-Deployments herrscht jedoch ein eklatantes Sicherheitsvakuum:

  • Statische Master-API-Keys: Autonome Agenten und Pipelines operieren mit allmächtigen Service-Tokens, die im Klartext in Umgebungsdateien hinterlegt sind und bei Kompromittierung unbegrenzten Datenzugriff erlauben.
  • Das Confused-Deputy-Problem: Ein Agent erhält im Auftrag eines Endnutzers eine komplexe Problemstellung, nutzt jedoch zur Tool-Ausführung seine eigenen, überprivilegierten Systemrechte. Böswillige Prompt Injections führen so unmittelbar zu Datenexfiltration oder unberechtigten Transaktionen.
  • Fehlende Mandanten- und Rollenisolation: Vektordatenbanken (Qdrant), relationale Persistenzschichten (PostgreSQL) und Graph-Datenbanken (Neo4j) können Anfragen aus Web-Interfaces oft nicht verlässlich einem verifizierten Endnutzer zuordnen.
  • Audit- und Compliance-Lücken: Gesetzliche Vorgaben nach DSGVO und EU AI Act verlangen die lückenlose, kryptografisch nachweisbare Nachvollziehbarkeit jeder automatisierten Entscheidung und jedes Datenbankzugriffs.

Genau an dieser Nahtstelle greift Keycloak als Schicht 5 (Gateway, Identity & Access Management) unseres Referenzmodells ein. Als hochgradig performanter, cloud-nativer Open-Source-Identity-Provider (IdP) standardisiert Keycloak moderne Authentifizierungs- und Autorisierungs-Flows (OAuth 2.0 [Har12], OpenID Connect [Sak14], SAML 2.0, UMA 2.0).

Bevor wir die internen Protokollabläufe und Token-Transformationsmechanismen im Detail analysieren, visualisiert das folgende Architekturmodell die Einbettung von Keycloak in die Gesamttopologie unseres Stacks:

KEYCLOAK ZERO-TRUST GOVERNANCE IM SOUVERÄNEN AI TECH STACK End-to-End Identitätspropagation, Token-Verifikation & Mandantenisolation über alle 6 Architekturschichten SCHICHT 6: HUMAN INTERFACE · OPEN WEBUI • SvelteKit SPA mit interaktivem Benutzer-Login via OIDC Authorization Code Flow + PKCE • Personalisierte Arbeitsbereiche, Chat-Verläufe und Prompt-Bibliotheken gebunden an Benutzer-ID SCHICHT 5: GATEWAY & ROUTING · LITELLM PROXY • Zustandslose JWT-Validierung am API-Perimeter gegen Keycloak JWKS (Latenz < 1 ms) • Rollen-Mapping: Keycloak Realm-Rollen ➔ LiteLLM RBAC (proxy_admin, team_lead, researcher) • Automatische Budget- & TPM/RPM-Limitierung auf Team- und Benutzerebene SCHICHT 3: AGENTISCHE WORKFLOWS · LANGGRAPH • Zyklische Multi-Agenten-Graphen & Microservice-Workflows mit Service Accounts • Zustandsbehaftete Checkpoints mit kryptografischer Nachvollziehbarkeit des auslösenden Akteurs SCHICHT 2: AGENT RUNTIME & SKILLS · HERMES AGENT & WIKISKILLS • RFC 8693 Token Exchange: Agent agiert im Auftrag des Nutzers mit reduzierten Privilegien • Feingranularer MCP-Tool-Aufruf (Model Context Protocol) abgesichert via UMA 2.0 Scopes SCHICHT 4: LANGZEITGEDÄCHTNIS & HYBRID-SPEICHER · MEM0, QDRANT, NEO4J • Strikte Mandanten- und Benutzerisolation über JWT-Claims (`tenant_id`, `sub`) • Vektor- und Wissensgraph-Partitionierung: Kein unautorisierter Cross-Tenant-Speicherzugriff SCHICHT 1: PRIVATE INFERENZ · vLLM ACCELERATOR CLUSTER • Abgeschirmtes internes GPU-Netzwerk; kein direkter externer Zugriff • Exklusiver Aufrufkanal über das authentifizierte LiteLLM Gateway KEYCLOAK IAM CORE Identity Federation • LDAP / Active Directory Sync • SAML 2.0 & OIDC Social Brokering • MFA, WebAuthn & Passkeys Token & Delegation Engine • OpenID Connect (OIDC) v1.0 • RFC 8693 Standard Token Exchange • Asymmetrische Signaturen (RS256/EdDSA) • Dynamische JWKS Key-Distribution Zero-Trust Token Emission UMA 2.0 & Policy Engine • Resource Server & Permission Tickets • RBAC / ABAC Decision Engine • RPT (Requesting Party Token) Issuance Feingranulare MCP-Tool-Rechte Audit & Session Management • Infinispan In-Memory Session Cache • OIDC Backchannel Logout Propagation • SIEM / OTEL Audit Logging SPI Compliance & EU AI Act Ready Legende: ■ UX-Perimeter · ■ Inferenz-Gateway · ■ Multi-Agenten-Graphen · ■ Agent-Runtime & Skills · ■ Wissensspeicher · ■ Keycloak IAM
Keycloak Zero-Trust Governance und Schichtenintegration im souveränen AI Tech Stack

1. Keycloak im Kontext des souveränen AI Tech Stacks

In unserem sechsgliedrigen Referenzstack agiert Keycloak nicht als isolierter Authentifizierungsserver, sondern als universelle Vertrauensanker-Instanz (Trust Broker), der Mensch-zu-Maschine-, Maschine-zu-Maschine- und Maschine-zu-Ressource-Transaktionen kryptografisch absichert:

  1. Mensch-zu-System (Schicht 6 · Open WebUI): Fachanwender, Forscher und Studierende melden sich über standardisierte Single-Sign-On-Verfahren (SSO) an. Open WebUI delegiert die Authentifizierung via OpenID Connect (OIDC) Authorization Code Flow mit PKCE vollständig an Keycloak. Passwörter oder biometrische Merkmale berühren die Web-UI zu keinem Zeitpunkt.
  2. Gateway-Absicherung (Schicht 5 · LiteLLM Proxy): LiteLLM validiert eintreffende Requests zustandslos anhand der von Keycloak asymmetrisch signierten JSON Web Tokens (JWT). Über Keycloak Protocol Mappers werden Rollen, Team-Zugehörigkeiten und Budgetgrenzen direkt in den Token injiziert.
  3. Agenten-Delegation & Token Exchange (Schichten 2 & 3 · Hermes Agent & LangGraph): Wenn ein autonomer Agent im Auftrag eines Nutzers Werkzeuge ausführt (via Model Context Protocol – MCP oder Google WikiSkills), tauscht er das Benutzer-Token nach RFC 8693 in ein downscoped, auditiertes Agenten-Token um.
  4. Mandantensichere Persistenz (Schicht 4 · Mem0, Qdrant, Neo4j): Speicherabfragen auf Langzeit-Fakten oder Knowledge Graphs werden anhand der im JWT transportierten Claims (tenant_id, sub, department) auf Partitionsebene gefiltert.
  5. Compute-Isolation (Schicht 1 · vLLM): Die GPU-Inferenzcluster operieren in einem abgeschirmten Zero-Trust-Netzwerk ohne öffentlichen Zugang. Zugriff erhält ausschließlich das von Keycloak autorisierte LiteLLM Gateway.

2. Systemarchitektur & Cloud-Native Quarkus Runtime

Mit der Veröffentlichung von Keycloak 17 vollzog das Projekt den wegweisenden architektonischen Wechsel von der klassischen WildFly-Plattform zur modernen Quarkus Cloud-Native Java Runtime. Für containerisierte KI-Umgebungen auf Basis von Kubernetes oder Docker bedeutet dies drastisch reduzierte Kaltstartzeiten (wenige Sekunden statt Minuten) und einen bis zu 60 % geringeren Arbeitsspeicherbedarf.

KEYCLOAK SYSTEM-ARCHITEKTUR & CLOUD-NATIVE QUARKUS CORE Hochperformante OIDC/OAuth2-Identity-Engine, verteiltes Infinispan In-Memory-State-Management & Enterprise-SPIs 1. KONSUMENTEN, AGENTEN & PERIMETER-GATEWAYS Open WebUI Frontend OIDC Auth Code Flow + PKCE LiteLLM Proxy Gateway Stateless JWT Auth & Role-Mapping Hermes Agent & LangGraph Client Credentials & RFC 8693 Exchange Admin Console & CLI kcadm.sh / REST Admin API 2. KEYCLOAK CLOUD-NATIVE CORE (QUARKUS REACTIVE RUNTIME · NON-BLOCKING NETTY) OIDC / Token Engine • JWT / JWS (RS256, EdDSA) • JWKS Key Rotation (/certs) • RFC 8693 Token Exchange • Refresh Token Rotation • OIDC Backchannel Logout • OAuth 2.0 Device Flow Latenz: < 2 ms (Stateless Verify) Realms & Multi-Tenancy • Master Realm (Cluster Admin) • AI-Tenant Realms (Isoliert) • Client Scopes & Audiences • Protocol Mappers (Custom Claims) • Composite & Client Roles • User Groups & Attributes Strikte Tenant-Isolation UMA 2.0 & Policy Engine • Fine-Grained Authorization • Resource Servers & Scopes • ABAC (Attribute-Based Policies) • RBAC (Role-Based Policies) • Permission Tickets & RPTs • JavaScript & Time Evaluation Policy Enforcement Points (PEP) Auth Flows & Brute Force • Modular Execution Flows • WebAuthn / FIDO2 / Passkeys • Time-Based OTP (TOTP) • Brute Force Detection • IP / Failure Lockout Limits • Identity Brokering (OIDC/SAML) Zero-Trust Perimeter INFINISPAN DISTRIBUTED CACHE • User Sessions & Client Sessions Verteilt im Cluster via JGroups / TCP • Login Failures & Rate Limits Echtzeit-Counter ohne DB-Writes • Offline Sessions & Action Tokens Persistiert & asynchron synchronisiert Sub-Millisekunden Lesezugriff POSTGRESQL RELATIONAL PERSISTENZ • Realm Konfiguration & Keys Kryptografische Schlüssel, RSA/EC Keypairs • Users, Credentials & Passwörter Argon2 / PBKDF2 Hashing, MFA-Secrets • Clients, Rollen & UMA Policies ACID-Garantie, Transaktionssicherheit Skalierbar via Read-Replicas SPI LAYER & USER FEDERATION • LDAP / Active Directory Federation Periodischer User-Sync & Kerberos SSO • Custom Event Listener SPI Audit-Streams an SIEM, Kafka & OTEL • Token Exchange & Mapper SPI Dynamische Claim-Transformation für AI 100% Modulare Erweiterbarkeit
Keycloak System-Architektur mit Quarkus Core, verteiltem Infinispan Cache und RDBMS Persistenz

Der reaktive Netty-Core

Das Herzstück der Quarkus-basierten Keycloak-Distribution bildet ein asynchroner, nicht-blockierender I/O-Kern auf Basis von Eclipse Vert.x und Netty. Eingehende HTTP/2- und HTTP/1.1-Verbindungen werden auf Event-Loops entgegengenommen:

  • RESTEasy Reactive: REST-Endpunkte (/realms/{realm}/protocol/openid-connect/...) verarbeiten Token-Anfragen ohne thread-basiertes Blocking.
  • Worker-Thread-Pool: Zeitintensive kryptografische Operationen (wie Argon2id- oder PBKDF2-Passworthashing) sowie transaktionale Datenbankabfragen werden kontrolliert an den internen Worker-Pool übergeben, wodurch der Event-Loop stets reaktionsfähig bleibt.

Die Persistenz- und Cache-Topologie

Um enterprise-typische Anforderungen an Hochverfügbarkeit und Sub-Millisekunden-Latenzen zu erfüllen, setzt Keycloak auf eine zweistufige Persistenzarchitektur:

SchichtTechnologiePrimäre Aufgaben & DatenstrukturenKonsistenzmodell
Distributed In-Memory CacheInfinispan (via JGroups TCP)• Aktive User Sessions (authenticationSessions)
• Login-Failure-Counter & Brute-Force-Tracking
• Action Tokens & Einmal-Codes (authorization_code)
• Realm-, Client- und Rollen-Metadaten-Cache
Eventual Consistency (verteilt mit Replikationsfaktor N=2N=2)
Relational Data StorePostgreSQL 16+ (via Agroal & Hibernate)• Realm-Konfigurationen und kryptografische Keys
• User-Accounts, Credentials & MFA-Secrets
• Rollendefinitionen, Client Scopes & Mappers
• Persistierte Offline-Sessions (Long-Lived Tokens)
Strikte ACID-Transaktionalität

Durch das Caching von Realm- und Client-Metadaten im Infinispan-Speicher kann Keycloak eingehende OIDC-Discovery-Aufrufe (/.well-known/openid-configuration) und JWKS-Schlüsselabrufe (/protocol/openid-connect/certs) vollständig aus dem Arbeitsspeicher bedienen.

3. Kernabstraktionen & Multi-Tenancy

Das Konfigurationsmodell von Keycloak basiert auf klaren softwaretechnischen Abstraktionen, die eine saubere Mandantentrennung im KI-Ökosystem garantieren.

Realm-Isolation: Master vs. AI-Tenant-Realms

Ein Realm (Reich/Mandantenraum) stellt eine vollständig isolierte Sicherheitsdomäne dar:

  • Master Realm: Dient ausschließlich der administrativen Verwaltung des Keycloak-Clusters. Hier existieren nur Administratoren; er beherbergt niemals Endanwender oder KI-Clients.
  • AI-Tenant Realms (enterprise-ai, fh-ooe-campus): Eigene Sicherheitsdomänen für Unternehmensabteilungen oder Organisationen. Jeder Realm verwaltet seine eigenen Benutzer, Rollen, Clients, kryptografischen RSA/EC-Schlüsselpaare und Identitäts-Provider-Verknüpfungen.

Client-Klassifizierung im AI Tech Stack

In Keycloak ist jeder Service, der Authentifizierung anfordert oder Ressourcen schützt, als Client registriert:

  1. Public Clients (Frontend / Browser): Verwendet für Open WebUI. Da Client-Secrets in browserseitigen Single-Page-Applications (SPA) nicht geheim gehalten werden können, verbietet Keycloak hier statische Secrets und erzwingt zwingend Proof Key for Code Exchange (PKCE) nach RFC 7636.
  2. Confidential Clients (Backend-Services): Verwendet für LiteLLM Proxy, den Hermes Agent Runtime-Dienst und LangGraph-Orchestrierungs-Knoten. Diese Services laufen in sicheren Serverumgebungen und authentifizieren sich über kryptografisch starke Client-Credentials (client_secret oder mTLS Client Certificates).
  3. Bearer-Only / Resource Servers: Microservices und Model Context Protocol (MCP) Server, die selbst keine Tokens ausstellen, sondern lediglich eingehende Bearer Tokens validieren und Ressourcen schützen.

Protocol Mappers & Dynamische Claims-Injektion

Ein zentraler Mehrwert von Keycloak für unseren AI Stack sind Protocol Mappers. Sie reichern die erzeugten JWTs mit dynamischen Attributen an, die von nachgelagerten Schichten zur Laufzeit ausgewertet werden:

{
  "exp": 1789045200,
  "iat": 1789041600,
  "iss": "https://auth.company.internal/realms/enterprise-ai",
  "aud": ["litellm-gateway", "mcp-service"],
  "sub": "4b68e92a-3c12-4e89-a21a-637bb3098e91",
  "preferred_username": "georg.hackenberg",
  "email": "georg.hackenberg@fh-ooe.at",
  "realm_access": {
    "roles": ["ai-researcher", "default-roles-enterprise-ai"]
  },
  "tenant_id": "fh-ooe-wels",
  "cost_center": "DEPT_INFORMATICS_742",
  "budget_limit_eur": 250.00,
  "allowed_models": ["vllm/*", "claude-3-5-sonnet", "gpt-4o"],
  "clearance_level": "RESTRICTED_RESEARCH"
}

Durch diese Claims-Injektion weiß LiteLLM unmittelbar nach der Signaturprüfung, welches Budget gilt und welche Modelle freigeschaltet sind, ohne eine synchrone REST-Anfrage an ein Abrechnungssystem stellen zu müssen.

4. Authentifizierungs- & Delegations-Flows im Agenten-Zeitalter

Klassische Web-Architekturen beschränken sich auf die Anmeldung von Menschen. In einem agentischen KI-System interagieren jedoch Menschen, autonome Software-Agenten und verteilte Werkzeuge dynamisch miteinander. Keycloak orchestriert hierfür drei essenzielle Protokollabläufe:

1. Authorization Code Flow mit PKCE (Mensch-zu-UI)

Der Goldstandard für interaktive Webanwendungen wie Open WebUI:

  1. Der Browser generiert ein kryptografisches Geheimnis, den Code Verifier V∈{0,1}256V \in \{0, 1\}^{256}, und leitet den Code Challenge C=BASE64URL(SHA256(V))C = \text{BASE64URL}(\text{SHA256}(V)) ab.
  2. Open WebUI leitet den Nutzer an Keycloak weiter (/auth?response_type=code&client_id=open-webui&code_challenge=C&code_challenge_method=S256).
  3. Der Nutzer authentifiziert sich (Passwort, WebAuthn/Passkey, Firmen-LDAP).
  4. Keycloak sendet einen kurzlebigen Authorization Code zurück an die Callback-URL.
  5. Open WebUI tauscht den Code zusammen mit dem originalen VV am Token-Endpunkt gegen ID-Token, Access-Token und Refresh-Token ein. Keycloak verifiziert C=?SHA256(V)C \stackrel{?}{=} \text{SHA256}(V) und stellt die Token aus.

2. Client Credentials Flow (Autonome System-Pipelines)

Hintergrund-Dienste, wie zeitgesteuerte RAG-Indexierungs-Pipelines oder automatisierte LangGraph-Graphen, agieren ohne menschlichen Interaktionspartner. Sie authentifizieren sich direkt über den OAuth 2.0 Client Credentials Flow: Hermes Service→POST /token (client_id, client_secret)Keycloak→JWT Access TokenHermes Service\text{Hermes Service} \xrightarrow{\text{POST /token (client\_id, client\_secret)}} \text{Keycloak} \xrightarrow{\text{JWT Access Token}} \text{Hermes Service}

3. OAuth 2.0 Token Exchange (RFC 8693) & Agenten-Delegation

Das gravierendste Sicherheitsproblem agentischer Architekturen ist das Confused-Deputy-Problem: Wenn der Hermes Agent im Auftrag von Georg ein internes Werkzeug (z. B. eine SQL-Datenbankabfrage via MCP) aufrufen soll, darf er Georgs mächtiges Master-Token nicht unmodifiziert an Drittsysteme weiterleiten. Das Drittsystem könnte Georgs Identität missbrauchen, um andere Services zu kompromittieren.

Die Lösung bildet der in Keycloak produktionsreif integrierte Standard Token Exchange nach RFC 8693 [JNCM20]:

OAUTH 2.0 TOKEN EXCHANGE (RFC 8693) IM AGENTEN-ÖKOSYSTEM Sichere Identitätspropagation, Privilegien-Downscoping & Abwehr des Confused-Deputy-Problems 1. End-User & UI Open WebUI Frontend OIDC Session (sub: user_123) 2. Hermes Agent Confidential Client client_id: hermes-agent 3. Keycloak IAM Token Exchange Engine RFC 8693 Token Endpoint 4. Resource Server MCP Tool / LiteLLM Proxy aud: mcp-erp-service 1. Prompt & Delegations-Trigger Überträgt Benutzer-Token (T_user) 2. POST /token (grant_type=token-exchange) subject_token=T_user · aud=mcp-erp · downscope Keycloak Policy Evaluation • Client Policy: Hermes autorisiert • Downscoping: Schreibrechte entzogen • Actor-Claim: act={sub:hermes-agent} 3. Emittiere T_delegated (Downscoped) Reduzierter Scope + kryptografischer Actor-Claim Token Claims (T_delegated): sub: "user_123" (Original-Identität) act: { "sub": "hermes-agent" } (Stellvertreter) aud: "mcp-erp" | scope: "erp:read" 4. Tool-Aufruf mit T_delegated: GET /api/v1/inventory Überträgt Bearer T_delegated (Gültig exklusiv für mcp-erp) Stateless Token Verification • Signatur via Keycloak JWKS geprüft • Scope verifiziert: nur Leserechte • Audit: user_123 via hermes-agent Sicherheitsgarantie (Abwehr des Confused-Deputy-Problems): Der Agent erhält niemals die Generalvollmacht des Nutzers. Token sind kryptografisch an den Zielservice (aud) gebunden, auf Minimalrechte (downscoped) reduziert und im Audit-Trail lückenlos als Delegationskette (sub + act) nachvollziehbar.
OAuth 2.0 Token Exchange (RFC 8693) Flow im Zusammenspiel zwischen Open WebUI, Hermes Agent und Keycloak

Der mathematisch-formale Ablauf des Token Exchange:

  1. Delegations-Trigger: Open WebUI übergibt dem Hermes Agent die Aufgabe zusammen mit dem aktuellen Benutzer-Token TuserT_{\text{user}} mit Scopes Sfull={openid,ai:chat,db:read,db:write,admin}S_{\text{full}} = \{\text{openid}, \text{ai:chat}, \text{db:read}, \text{db:write}, \text{admin}\}.
  2. Exchange Request: Der Hermes Agent sendet einen Token-Exchange-Request an Keycloak:
    POST /realms/enterprise-ai/protocol/openid-connect/token HTTP/1.1
    Host: auth.company.internal
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=urn:ietf:params:oauth:grant-type:token-exchange
    &client_id=hermes-agent-runtime
    &client_secret=sec_99481a...
    &subject_token=eyJhbGciOiJSUzI1Ni...
    &subject_token_type=urn:ietf:params:oauth:token-type:access_token
    &audience=mcp-sql-database
    &scope=db:read
    &requested_token_type=urn:ietf:params:oauth:token-type:access_token
  3. Keycloak Policy Enforcement:
    • Keycloak validiert die Client-Credentials des Hermes Agenten.
    • Keycloak prüft, ob die Client-Policy dem Hermes Agenten gestattet, Token für die Ziel-Audience mcp-sql-database einzutauschen.
    • Keycloak vollzieht ein Downscoping: Schreibrechte (db:write) werden strikt entfernt; das neue Token enthält nur die Schnittmenge Sdownscoped=Srequested∩Suser={db:read}S_{\text{downscoped}} = S_{\text{requested}} \cap S_{\text{user}} = \{\text{db:read}\}.
  4. Token-Ausstellung mit Actor Claim: Das emittierte Token TagentT_{\text{agent}} transportiert die kryptografische Delegationskette über den standardisierten act-Claim:
    {
      "sub": "georg.hackenberg",
      "act": {
        "sub": "client:hermes-agent-runtime"
      },
      "aud": "mcp-sql-database",
      "scope": "db:read",
      "exp": 1789042200
    }
  5. Verifikation am MCP-Server: Der SQL-Connector prüft die Signatur. Im Audit-Log wird transparent protokolliert: „Abfrage ausgeführt für Nutzer georg.hackenberg über Stellvertreter hermes-agent-runtime.“

Ein böswilliger Versuch des Agenten, schreibende SQL-Befehle (DROP TABLE) abzusetzen, scheitert unmittelbar an den kryptografischen Scopes des Tokens.

5. Feingranulare Autorisierung: RBAC, ABAC & UMA 2.0

Authentifizierung stellt lediglich fest, wer eine Anfrage stellt. Autorisierung entscheidet, was der Anfragende tun darf. Im AI Tech Stack kombinieren wir über Keycloak drei Dimensionen der Zugriffskontrolle:

AUTORISIERUNGSMATRIX: RBAC, ABAC & UMA 2.0 IM KI-ÖKOSYSTEM Feingranulare Zugriffskontrolle für Inferenzmodelle, Agenten-Tools (MCP) und Wissensspeicher 1. ROLLENBASIERT (RBAC) Rolle: ai-admin • LiteLLM Admin & globale Budgets • Zugriff auf alle Frontier- & Cloud-Modelle • Bereitstellung von MCP-Connectors Volle Management-Autorität Rolle: ai-researcher • Zugriff auf 70B+ vLLM & Claude 3.5 • Schreib- und Leserechte auf Neo4j • Hermes Agent Tool Execution Erweiterte Forschungsprivilegien Rolle: ai-developer • Lokale vLLM-Modelle & Standard-APIs • Qdrant Vektor-RAG Lesezugriff • TPM/RPM Kontingent nach Team-Vorgabe Standard Entwickler-Zugang Rolle: internal-user / student • Ausschließlich lokale vLLM-Modelle • Keine externen kostenpflichtigen APIs • Isolierter Chat- und Mem0-Speicher • Monats-Budget gecappt (z. B. 20 €) Kosten- & Datenbegrenzung 2. ATTRIBUTE & CLAIMS (ABAC) Protocol Mappers (JWT Injektion) • tenant_id: Mandant für Qdrant/Mem0 • cost_center: Kostenstelle für Audit • budget_limit: Inferenz-Budget (EUR) • allowed_models: Modell-Whitelist • clearance: Sicherheitslevel (L1–L4) Zur Token-Laufzeit generiert Kontextuelle ABAC-Policies • Netzwerk-Zonierung: Sensible Modelle nur via Campus-IP/VPN • Zeitfenster-Policies: Batch-Inferenz außerhalb Spitzenlast • Data Classification: Sensible Daten ausschließlich lokal (vLLM) Stateless Gateway Enforcement LiteLLM evaluiert Claims im JWT: if model not in claims.models: raise AccessDenied(403) Kein Datenbank-Roundtrip nötig! Prüf-Latenz: < 0.2 ms (In-Memory) 3. UMA 2.0 & RESSOURCEN Geschützte KI-Ressourcen • Inferenz-Endpunkte: /v1/models/llama-70b (Scope: infer) • MCP Werkzeuge & Konnektoren: /mcp/erp-service (Scope: tool:sql_read) • Wissensgraphen (Neo4j): /graphs/enterprise (Scopes: query, mutate) Ticket & RPT Token Lifecycle 1. Client fordert Ressource an 2. Server antwortet mit Permission Ticket (401) 3. Client tauscht Ticket bei Keycloak ein 4. Keycloak evaluiert Policy-Matrix 5. Keycloak emittiert RPT (Requesting Party Token) Standardisierter UMA 2.0 Ablauf Policy Enforcement Point (PEP) • Entkopplung von Fachcode & Security • Keine hartcodierten ACLs im Agenten • Zentrale Auditierbarkeit im IDP • Sofortiger Widerruf von Tool-Rechten Dynamischer Zero-Trust Schutz Synergie der drei Autorisierungs-Dimensionen: • 1. RBAC: Definiert statische Organisationsrollen (ai-admin, researcher, student) und regelt den Basiszugang zu Modellkatalogen und Repositories. • 2. ABAC: Steuert dynamische Kontextattribute (tenant_id, budget_limit, Zeitfenster, IP-Netzwerkzone) und erlaubt zustandslose Latenz-Validierung am Gateway. • 3. UMA 2.0: Schützt konkrete KI-Werkzeuge (Model Context Protocol) und Inferenz-Ressourcen über Ticket-basierte Requesting Party Tokens (RPT).
Autorisierungsmatrix im KI-Ökosystem: RBAC, ABAC und UMA 2.0 im Zusammenspiel

1. Rollenbasierte Zugriffskontrolle (RBAC)

Keycloak unterscheidet zwischen globalen Realm Roles und dienstspezifischen Client Roles:

  • ai-admin: Vollzugriff auf Inferenz-Routing, globale Team-Budgets und GPU-Cluster-Management.
  • ai-researcher: Zugriff auf unzensierte 70B+ Modelle, Cloud-Frontier-APIs, Schreibzugriff auf Wissensgraphen (Neo4j).
  • ai-developer: Standard-Modelle, Lesezugriff auf RAG-Collections in Qdrant, Entwicklungstools.
  • internal-user / student: Strikte Beschränkung auf lokale vLLM-Modelle, Monats-Tokenbudget gecappt auf 20 €.

2. Attributbasierte Zugriffskontrolle (ABAC)

Rollen allein sind oft zu starr. ABAC ermöglicht dynamische, kontextsensitive Richtlinienentscheidungen:

  • Time-Based Policies: Batch-Inferenz-Jobs von Agenten dürfen nur außerhalb der Kernarbeitszeiten (z. B. 20:00 – 06:00 Uhr) ausgeführt werden.
  • Network / IP Policies: Zugriff auf sensible interne Forschungsmodelle wird verweigert, wenn die Anfrage nicht aus dem Universitätsnetz oder über autorisiertes WireGuard-VPN erfolgt.
  • Data Classification Level: Ein Dokument mit dem Tag CONFIDENTIAL_FINANCE darf nur von LLM-Instanzen verarbeitet werden, deren Inferenz nachweislich On-Premises ohne Cloud-Egress stattfindet.

3. User-Managed Access (UMA 2.0) für Model Context Protocol (MCP) Tools

Für die Absicherung sensibler Unternehmensressourcen (ERP-APIs, CRM-Konnektoren, Dateisysteme) fungieren MCP-Server als UMA 2.0 Resource Servers:

  1. Der Agent versucht, eine geschützte Funktion aufzurufen (POST /mcp/erp/invoices).
  2. Der Resource Server blockiert die Anfrage mit HTTP 401 Unauthorized und liefert ein kryptografisches Permission Ticket zurück.
  3. Der Agent reicht dieses Ticket bei Keycloak am Token-Endpunkt ein.
  4. Keycloak evaluiert die hinterlegten Richtlinien (Rollen, Attribute, Zustimmung des Ressourcenbesitzers).
  5. Bei Erfolg stellt Keycloak ein Requesting Party Token (RPT) aus, mit dem der Agent die Funktion final ausführen kann.

6. Token-Lebenszyklus, Kryptografie & Hochlast-Performance

Ein häufiges Missverständnis beim Einsatz von Identity-Providern ist die Sorge vor Performanzeinbußen. In Echtzeit-Inferenz-Pipelines, in denen jede Millisekunde Latenz zählt, darf die Sicherheitsüberprüfung keinen spürbaren Overhead verursachen.

Zustandslose Signaturprüfung via JWKS (JSON Web Key Set)

Keycloak und unser API-Gateway LiteLLM eliminieren Datenbank-Roundtrips durch stateless JWT validation:

  1. Einmaliger Schlüsselaustausch: Beim Start lädt LiteLLM den öffentlichen Schlüsselkatalog von Keycloak über den Endpoint https://auth.company.internal/realms/enterprise-ai/protocol/openid-connect/certs und puffert ihn im lokalen Speicher.
  2. Lokale Kryptografie: Trifft ein HTTP-Request mit Bearer Token ein, verifiziert LiteLLM die Signatur asymmetrisch im Arbeitsspeicher: VerifyPK(Payload,Signature)=?True\text{Verify}_{\text{PK}}(\text{Payload}, \text{Signature}) \stackrel{?}{=} \text{True}
  3. Schlüsselrotation ohne Downtime: Wechselt Keycloak periodisch seine Signaturschlüssel (z. B. alle 90 Tage), signalisiert der JWT-Header über den Parameter kid (Key ID) den Schlüsselwechsel. LiteLLM aktualisiert seinen In-Memory-Cache transparent im Hintergrund.
  4. Gemessene Latenz: Die rein lokale Signatur- und Claims-Prüfung benötigt auf modernen Prozessoren <0.2 ms< 0.2\,\text{ms} – der Verarbeitungs-Overhead für Sicherheits-Governance ist vernachlässigbar.

Asymmetrische Kryptografie: RS256 vs. EdDSA

Während traditionelle Deployments auf RSA mit 2048 bzw. 4096 Bit (RS256) setzen, unterstützt das moderne Keycloak auf Quarkus elliptische Kurvenverfahren wie EdDSA (Ed25519) und ES256:

  • Kürzere Tokens: Reduziert die HTTP-Header-Größe um über 70 %, was insbesondere bei mobilen Verbindungen Bandbreite spart.
  • Höhere Recheneffizienz: Ed25519-Signaturprüfungen sind um den Faktor 3–5 schneller als RSA-4096-Operationen.

OIDC Backchannel Logout & Revocation

Verlässt ein Mitarbeiter das Unternehmen oder wird ein Agenten-Token kompromittiert, reicht das Abwarten der Token-Ablaufzeit (TexpT_{\text{exp}}, typischerweise 5–15 Minuten) im Enterprise-Kontext nicht aus.

Keycloak implementiert den OpenID Connect Back-Channel Logout (RFC 7662 / OIDC Core):

  • Wird eine Session in der Keycloak Admin Console terminiert, sendet Keycloak parallel asynchrone HTTP-POST-Logout-Tokens an alle registrierten Clients (Open WebUI, LiteLLM).
  • Die Clients invalidieren ihre lokalen Session-Caches augenblicklich; laufende Agenten-Zyklen des betroffenen Nutzers werden innerhalb von Millisekunden gestoppt.

7. High-Availability & Kubernetes Operator

Für unternehmenskritische 24/7-Infrastrukturen muss Keycloak redundant und ausfallsicher betrieben werden. In Produktionsumgebungen erfolgt das Deployment standardisiert über den offiziellen Keycloak Kubernetes Operator.

HIGH-AVAILABILITY & KUBERNETES-CLUSTER-TOPOLOGIE Keycloak Operator, Infinispan Cache-Replikation (JGroups KUBE_PING) & PostgreSQL HA ENTERPRISE INGRESS / LOAD BALANCER (TRAEFIK / ENVOY / NGINX) • TLS 1.3 Termination & HTTP/2 Multiplexing • Cookie-Based Session Stickiness (AUTH_SESSION_ID) Zero-Downtime Failover KUBERNETES / OPENSHIFT CLUSTER (ORCHESTRIERT VIA KEYCLOAK OPERATOR) Keycloak Pod #1 (Quarkus) • Vert.x Non-Blocking Engine • RESTEasy Reactive API Handler Embedded Infinispan Node A • Owner für Session Partitions 1-33% • Backup für Session Partitions 34-66% Health: /lb-check (HTTP 200) Keycloak Pod #2 (Quarkus) • Vert.x Non-Blocking Engine • RESTEasy Reactive API Handler Embedded Infinispan Node B • Owner für Session Partitions 34-66% • Backup für Session Partitions 67-100% Health: /lb-check (HTTP 200) Keycloak Pod #3 (Quarkus) • Vert.x Non-Blocking Engine • RESTEasy Reactive API Handler Embedded Infinispan Node C • Owner für Session Partitions 67-100% • Backup für Session Partitions 1-33% Health: /lb-check (HTTP 200) VERTEILTER JGROUPS BUS (DISCOVERY: KUBE_PING / DNS_PING · PORT 7800 TCP) Automatische Topologie-Erkennung & Cache-Replikation POSTGRESQL HIGH AVAILABILITY CLUSTER (PATRONI / PGBOUNCER) PostgreSQL Primary (RW) • Transaktionale Writes • User, Realm & Client Changes • Synchronous WAL Replication RPO = 0 / RTO < 10s PostgreSQL Standby (RO) • Skalierbare Leseabfragen • Offline Session Queries • Automatisches Failover Entlastet Primary Instance ENTERPRISE FEDERATION & OBSERVABILITY PIPELINES Enterprise IdP / LDAP • Active Directory (LDAPS / 636) • Campus Shibboleth SAML • Kerberos SPNEGO SSO Periodischer Sync-Worker Telemetrie & Audit (OTEL) • Prometheus Metriken (/metrics) • OpenTelemetry Tracing • Audit Event Listener SPI Echtzeit Security SIEM
Keycloak High-Availability und Kubernetes-Topologie mit Operator, JGroups und PostgreSQL Cluster

Cluster-Discovery mit JGroups & KUBE_PING

In Kubernetes-Clustern besitzen Pods dynamische IP-Adressen. Das klassische IP-Multicast-Verfahren scheitert in virtualisierten Cloud-Netzwerken. Keycloak nutzt daher JGroups mit KUBE_PING bzw. DNS_PING:

  • Die Keycloak-Pods fragen über die Kubernetes-API oder einen Headless Service die IPs aller aktiven Pods mit dem Label app=keycloak ab.
  • Über Port 7800/TCP bauen die Pods ein vollvermaschtes P2P-Netzwerk auf.
  • Tritt ein neuer Pod dem Deployment bei (Horizontal Pod Autoscaler), synchronisiert der Infinispan-Cluster die Cache-Partitionen automatisch ohne Dienstunterbrechung.

Zero-Downtime Session Stickiness

Um unnötigen Cache-Replikations-Traffic zwischen den Knoten zu minimieren, setzt der Ingress-Controller (Traefik oder NGINX) ein Cookie-basiertes Routing ein:

  • Beim ersten Login setzt Keycloak das Cookie AUTH_SESSION_ID=<session-id>.<node-id>.
  • Nachfolgende Anfragen desselben Nutzers werden vom Ingress direkt an denjenigen Pod weitergeleitet, der als primärer Owner der Session im Infinispan-Cluster fungiert.
  • Fällt ein Pod aus, übernimmt der definierte Backup-Pod die Session transparent. Der Nutzer bemerkt keinen Sitzungsverlust.

Herausforderungen im Multi-Datacenter-Betrieb: Infinispan Cross-Site Replication

Während ein lokaler Keycloak-Cluster im selben Kubernetes-Netzwerk via KUBE_PING stabil skaliert, stellt der Betrieb über geografisch getrennte Rechenzentren (Multi-Region / Multi-Site) hohe architektonische Anforderungen:

  • Latenz der synchronen Replikation: Synchrone Sitzungsreplikation über WAN-Strecken hinweg erzeugt spürbaren Login-Overhead. Keycloak nutzt daher asynchrone Cross-Site-Replikation in Infinispan.
  • Split-Brain-Vermeidung: Bei Netzwerktrennungen zwischen Rechenzentren müssen JGroups-Split-Brain-Resolver und strikte Quorum-Regeln verhindern, dass beide Seiten unabhängig voneinander inkonsistente Session-Zustände mutieren.
  • Für die meisten Unternehmensanwendungen empfiehlt sich daher eine aktive Primärregion mit warmem Standby-Rechenzentrum, gekoppelt an eine replizierte PostgreSQL-Datenbank.

8. Praxiseinsatz im Gesamtsystem: Ein End-to-End Walkthrough

Um das nahtlose Ineinandergreifen aller Komponenten zu demonstrieren, betrachten wir den Lebenszyklus einer geschützten Benutzeranfrage in unserem AI Tech Stack:

END-TO-END SECURITY WALKTHROUGH: ANFRAGE-LEBENSZYKLUS Lückenlose kryptografische Kette vom Benutzer-Prompt über Token-Exchange bis zur geschützten GPU-Inferenz 1. FACHANWENDER & OPEN WEBUI OIDC Single Sign-On (PKCE) • Prompt: "Analysiere Quartalsumsatz" • Hält aktives User Token: T_user sub: "georg.hackenberg" · aud: "hermes" 2. HERMES AGENT RUNTIME Autonomer Reasoning & Tool-Loop • Zerlegt Aufgabe in ERP-Abfrage & LLM-Synthese • Initiiert RFC 8693 Token Exchange Confidential Client: client:hermes-agent 3. KEYCLOAK IAM TRUST BROKER Token Exchange & Delegation Engine • Prüft Client-Policy & Scope-Rechte • Downscoping: Entfernt Schreibrechte Emittiert T_delegated (act: hermes-agent) 4. MCP RESOURCE SERVER (ERP TOOL) Enterprise Database & API Connector • Stateless Token Check via JWKS (/certs) • Scope verifiziert: erp:read (Read-Only) Audit: user="georg" via act="hermes-agent" 5. LITELLM PROXY GATEWAY Stateless Governance & Routing Hub • JWKS Signatur- & Expiration-Check (<0.2ms) • Claim-Prüfung: Budget-Limit & Whitelist Routet Inferenz an lokalen GPU-Knoten 6. vLLM ACCELERATOR CLUSTER Private Private Model Inference • Abgeschirmtes internes GPU-Netzwerk • PagedAttention Inferenz (Llama-3.3-70B) Kein externer Netzzugriff; 100% datensouverän 1. Prompt 2. Exch Req 3. T_deleg 4. GET /api/v1/invoices 5. Rohdaten-Rückgabe 6. LLM Inferenz POST /chat/completions 7. Route GPU 8. & 9. SSE Streaming Response vLLM ➔ Gateway ➔ UI Stream KRYPTOGRAFISCHE SICHERHEITSGARANTIEN DIESES ABLAUFS 1. Zero Static Secrets • Kein Klartext-Secret in Configs • Nur kurzlebige JWT Bearer Tokens • Asymmetrische Signaturen (RS256) • Automatische Key-Rotation Schutz vor Secret-Leakage 2. Downscoped Delegation • RFC 8693 Token Exchange • Schreibrechte strikt entzogen • Audience auf MCP-Tool beschränkt • Prompt Injections wirkungslos Kein Confused-Deputy-Problem 3. Budget- & Modellkontrolle • LiteLLM liest Claims im JWT • Monats-Budget & TPM/RPM Limits • Modell-Whitelist zur Laufzeit • Verarbeitungszeit < 0.2 ms Kostentransparenz & Schutz 4. Lückenloses Audit • sub (Nutzer) & act (Agent) • Jeder DB-Turn kryptografisch belegt • Event-Streams an SIEM / Kafka • Erfüllt DSGVO & EU AI Act Rechtssichere Nachvollziehbarkeit
End-to-End Security Walkthrough: Vollständiger kryptografischer Anfrage-Lebenszyklus im Sovereign AI Tech Stack

Die Sicherheitsgarantien dieses Ablaufs:

  1. Kein Klartext-Secret im Umlauf: Kein einziger statischer API-Key ist in Konfigurationsdateien exponiert.
  2. Minimale Rechtevergabe: Der Hermes Agent verfügt während des ERP-Aufrufs über keinerlei Schreibrechte; selbst bei erfolgreicher Prompt Injection ist das Manipulieren von Finanzdaten kryptografisch unmöglich.
  3. Budgetkontrolle in Echtzeit: LiteLLM liest das Monatsbudget direkt aus den Keycloak-Claims des Tokens und bricht die Inferenz ab, falls das Kontingent der Fakultät erschöpft ist.
  4. Lückenloses Audit: Sowohl der MCP-Server als auch LiteLLM protokollieren die Kombination aus auslösendem Endnutzer (sub) und ausführendem Software-Agenten (act).

Fazit & Einordnung in den Sovereign AI Tech Stack

Keycloak ist weit mehr als eine Login-Maske: Im modernen KI-Ökosystem ist es das zentrale Nervensystem für Vertrauen, Identitäts-Governance und Least-Privilege-Zugriffskontrolle. Ohne ein leistungsfähiges, standardkonformes IAM-System lassen sich generative Sprachmodelle und autonome Agenten in regulierten Unternehmen, Industrie 4.0 und wissenschaftlichen Einrichtungen schlicht nicht rechtskonform und sicher betreiben.

Im Zusammenspiel unseres standardisierten Open-Source Agentic AI Tech Stacks bildet Keycloak das perfekte Fundament für alle weiteren Module:

  • Schicht 1 (Inferenz): vLLM liefert rohe GPU-Beschleunigung – hermetisch abgeriegelt im internen Netz.
  • Schicht 2 (Laufzeit & Skills): Der Hermes Agent und declarative WikiSkills nutzen RFC 8693 Token Exchange für sichere Werkzeugausführung.
  • Schicht 3 (Workflows): LangGraph steuert zustandsbehaftete Graphen über dedizierte Service Accounts.
  • Schicht 4 (Gedächtnis): Mem0, Qdrant und Neo4j partitionieren Wissen anhand von Keycloak Tenant-Claims.
  • Schicht 5 (Gateway & IAM): Keycloak + LiteLLM bilden das unüberwindbare Sicherheits- und Governance-Doppel für Routing, Caching und Identity Federation.
  • Schicht 6 (Human UX): Open WebUI bietet Fachanwendern eine ergonomische Schnittstelle mit nahtlosem OIDC Single Sign-On.

Mit dieser geschlossenen Open-Source-Architektur demonstrieren wir, dass technologische Souveränität, modernste Agenten-Autonomie und kompromisslose Enterprise-Sicherheit keine Widersprüche sind, sondern sich in einem wohlstrukturierten Softwaredesign gegenseitig verstärken.

Planen Sie den Aufbau einer souveränen, DSGVO-konformen KI-Infrastruktur in Ihrem Unternehmen oder Ihrer Forschungseinrichtung? Benötigen Sie Unterstützung bei der Anbindung von Keycloak an bestehende Active Directory/LDAP-Systeme, der Integration von Token-Exchange-Verfahren für autonome Agenten oder der Härtung von Inferenz-Gateways? Informieren Sie sich in unserem Leistungsbereich Artificial Intelligence oder vereinbaren Sie ein individuelles Fachgespräch zu unseren Servicemodulen Technology Stack und System Integration.

Referenzen