Signando Keycloak
Das Application Layer Gateway, das Keycloak durch OIDC-Grant-Type-Enforcement, SAML-XXE-Prävention, Admin-API-Schutz und Token-Response-Validierung absichert.
Was ist Signando Keycloak?
Signando Keycloak ist ein Application Layer Gateway (ALG), das zwischen Ihren Clients und Ihrem Keycloak Identity Provider sitzt. Es validiert jeden OIDC-, SAML- und Admin-API-Request durch eine 16-stufige Sicherheits-Pipeline, bevor er an Keycloak weitergeleitet wird.
Signando Keycloak validiert auch jede Antwort von Keycloak durch eine 9-stufige Response-Pipeline. Diese bidirektionale Validierung stellt sicher:
- Unsichere OAuth2-Flows (ROPC, Implicit) werden blockiert, bevor sie Keycloak erreichen
- Admin-API-Missbrauch (Realm-Export, Massen-User-Operationen) wird verhindert
- Token-Responses werden auf Algorithmus-Sicherheit und Claim-Leakage geprüft
- SAML-XXE- und Signature-Wrapping-Angriffe werden gestoppt
Technische Spezifikationen
| Sprache | 100% Rust |
| Latenz | < 10ms (p99) |
| Sicherheitstests | 102 Tests |
| Request-Pipeline | 16 Validierungsschritte |
| Response-Pipeline | 9 Validierungsschritte |
| Deployment | Docker / Kubernetes / Bare Metal |
Der Paranoid-Ansatz
Protokoll-bewusstes Enforcement
Anders als generische WAFs versteht Signando Keycloak die OAuth2-, OIDC- und SAML-Protokolle. Es erzwingt PKCE, blockiert unsichere Grant-Types und validiert Redirect-URIs gegen clientspezifische Whitelists.
4-Stufen-Isolation
Vier separate Prozesse kommunizieren ausschließlich über NATS- oder Valkey-Broker. Selbst wenn eine Stufe kompromittiert wird, kann sie nicht auf andere Stufen oder das Keycloak-Backend zugreifen.
Bidirektionale Validierung
Sowohl Requests als auch Responses werden validiert. Token-Responses werden auf Algorithmus-Sicherheit, Claim-Leakage und Lifetime-Verletzungen geprüft.
Die 4 Prozesse im Detail
Jeder Prozess ist isoliert und kommuniziert ausschließlich über definierte Kanäle.
1. Keycloak Frontend
Nimmt OIDC-, SAML- und Admin-API-Requests entgegen. Extrahiert Realm, client_id und klassifiziert den OAuth2-Flow.
Eingang
- HTTP/HTTPS-Requests auf Port 8443
- OIDC, SAML, Admin-API, Account-Konsole
- Realm- und client_id-Extraktion aus URL/Body
Ausgang
- Schreibt Request-Daten in Kanal 1 (Request Dirty)
- Liest validierte Responses aus Kanal 4 (Response Clean)
- Sendet HTTP-Response an den Client
2. Request Validator
16-stufige Validierungspipeline: OIDC-Grant-Types, Scopes, PKCE, SAML-XXE, Admin-API-Schutz und mehr.
Eingang
- Liest Request-Daten aus Kanal 1 (Request Dirty)
- Lädt TOML-Policy-Konfiguration
Ausgang
- Schreibt validierte Requests in Kanal 2 (Request Clean)
- Oder: Blocked-Request-Signal (OAuth2 JSON-Fehler)
3. Keycloak Backend
Leitet validierte Requests an den Keycloak-Server weiter und sammelt dessen Antworten.
Eingang
- Liest validierte Requests aus Kanal 2 (Request Clean)
Ausgang
- Ruft Keycloak auf Port 8080 (konfigurierbar)
- Schreibt Response in Kanal 3 (Response Dirty)
4. Response Validator
9-stufige Response-Validierung: JWT-Algorithmus-Enforcement, Token-Lifetime, Claim-Leakage-Erkennung, Sicherheits-Header.
Eingang
- Liest Responses aus Kanal 3 (Response Dirty)
Ausgang
- Schreibt validierte Responses in Kanal 4 (Response Clean)
- Bei Fehler: Generiert sichere OAuth2-Fehlerantwort
Datenfluss-Übersicht
┌──────────────────────────────────────────────────────────────────────────────┐ │ │ │ Client ──▶ KC Frontend ──▶ Ka. 1 ──▶ Request ──▶ Ka. 2 ──▶ KC Backend │ │ │ (8443) (Dirty) Validator (Clean) │ │ │ │ │ │ │ │ ▼ │ │ │ Keycloak │ │ │ (8080) │ │ │ │ │ │ │ ┌─────────────────────────────────────────────────────┘ │ │ │ │ │ │ │ ▼ │ │ │ Ka. 3 ──▶ Response ──▶ Ka. 4 │ │ │ (Dirty) Validator (Clean) │ │ │ │ │ │ │ ▼ │ │ ◀──────────────────────────── KC Frontend │ │ │ │ ════════════════════════════════════════════════════════════════════════ │ │ Kanäle: DirectMessageTransport (Mini) oder NATS/Valkey (Small/Full) │ └──────────────────────────────────────────────────────────────────────────────┘
Bereit, Ihr Keycloak abzusichern?
Kontaktieren Sie uns für eine Demo und persönliche Beratung.