Keycloak; Red Hat tarafından başlatılan ve sponsorlanan, açık-kaynak kimlik ve erişim yönetimi (IAM) sunucusudur. OAuth2, OpenID Connect, SAML 2.0 standartlarını native destekler; realm kavramıyla multi-tenant izolasyon, federation (LDAP, Active Directory, Kerberos) ile mevcut dizin servisleriyle entegrasyon sunar.
Keycloak’ın gücü, bir tek imza (SSO) altyapısıyla farklı protokollerdeki uygulamaları birleştirebilmesinden gelir. Eski SAML SaaS’iniz, yeni OIDC mikroservis’iniz, kurumsal AD’niz — hepsi tek Keycloak realm’inde birleşir. KVKK + veri ikametgâhı gerektiren kurumsal IAM ihtiyacı için fiili açık-kaynak standardıdır.
Mono’nun yaklaşımı
Mono ekibi Keycloak’ı hem kendi platform mühendisliği yığınında hem de müşteri kurulumlarında kullanır. Standart kararlarımız:
- Sürüm: Keycloak 24+ (Quarkus tabanlı); WildFly tabanlı eski sürümlerden geçiş.
- Veritabanı: PostgreSQL Patroni cluster; PgBouncer transaction-mode.
- Topology: Yatay ölçekli (3+ instance) + distributed cache (Infinispan) + sticky session veya session externalization.
- Auth flow: WebAuthn + TOTP varsayılan; password-policy minimum 12 karakter + breached check.
- Realm yapısı: Tek realm yerine kurum başına realm (operasyonel basitlik) — federation ile birleştir.
- Theme: Mono custom theme (kurumsal kimlik); SPA login pages için.
- Audit: Event listener → Kafka → SIEM (Wazuh).
Tipik kurulum
- Cluster: 3 Keycloak instance (K8s StatefulSet veya VM); HAProxy önünde sticky session.
- Database: PostgreSQL Patroni (3 node) + PgBouncer.
- Federation: Kurumsal AD/LDAP read-only; user import veya on-demand sync.
- Brokers: Microsoft Entra ID, Google Workspace, GitHub OAuth (uygulama bazlı).
- Themes + custom flow: Mono custom theme + sosyal login + WebAuthn.
- Monitoring: keycloak-metrics-spi → Prometheus → Grafana dashboard.
Yaygın sorunlar ve çözümler
- Yavaş login: PostgreSQL connection pool dar; long-running query (token introspection); user search index eksik.
- Yüksek session memory: Distributed cache yapılandırılmamış; session-externalization tercih (özellikle yatay ölçeklendirmede).
- MFA bypass: “Trust device” özelliği policy ile sınırlandırılmalı; risk-based authentication (Mono müşterilerimizde Authelia ek kat olarak).
- Realm export/import bozuk:
kc.sh export --users different_files; binary export her zaman ASCII’den iyi. - JWT signature key rotation: Realm key rotation periyodik (90 gün); cache invalidation orchestration.