Skip to main content
Keycloak bu sistemde kimlik sağlayıcısıdır (IdP): kullanıcı havuzu, parola, MFA, SSO ve dış IdP federasyonu (Google) ondadır. Token üretir; uygulama bu token’ı doğrular ve yetkilendirmeyi kendi yapar.

Neden Keycloak

  • OIDC + SSO standartlarına tam uyum, JWKS ile RS256 imza doğrulama.
  • Identity Federation — Google gibi dış IdP’leri delege eder.
  • MFA, parola politikası, brute-force koruma hazır gelir.
  • Self-hosted — kullanıcı verisi dışarı çıkmaz (on-prem müşteri ortamı için kritik).
  • Çoklu realm — vatandaş ve personeli aynı sunucuda izole tutar.

Çift realm mantığı

API iki ayrı realm’dan token kabul eder; her birinin ayrı kullanıcı havuzu, client’ı ve rolleri vardır.
TarafRealm (dev)ClientToken ömrüRol(ler)
Vatandaş (Website SPA)diyanet-vatandas-dev-realmdiyanet-website2 saat (7200 sn)Citizen
Personel (Admin SPA)diyanet-yonetim-dev-realmdiyanet-admin5 dakika (300 sn)SuperAdmin, Admin, Staff, ReadOnly
Personel token’ı bilinçli olarak çok kısadır (5 dk). Yönetim paneli yüksek-yetkili olduğundan çalınan bir token’ın penceresi minimumda tutulur; refresh token rotation (30 dk lifespan) ile sürekli oturum sağlanır. Vatandaş tarafı kullanılabilirlik için daha uzun tutulur (2 saat).

Client’lar

Her iki client da public (PKCE) client’tır — SPA’lar tarayıcıda çalıştığı için secret saklayamaz:
diyanet-website : PublicClient=true, StandardFlow=true, PkceRequired=true (S256), 2 saat token
diyanet-admin   : PublicClient=true, StandardFlow=true, PkceRequired=true (S256), 5 dk token
DirectAccessGrantsEnabled ve ServiceAccountsEnabled kapalıdır; yalnızca Authorization Code
  • PKCE akışı açıktır.

Provisioning: dev vs stage/prod

  • Dev: Keycloak bir container’dır (localhost:8080); API açılışta KeycloakProvisioning ile realm/client/rol/kullanıcı/mapper’ı otomatik kurar (RunOnce: true).
  • Stage/Prod: Keycloak genelde müşterinin mevcut harici instance’ıdır. Provisioning Enabled: false yapılıp realm manuel kurulabilir veya tek seferlik provisioning ile.

Token edinim akışı (Auth Code + PKCE)

Bu bölümde

Realm Yapısı

İki realm, roller, protocol mapper’lar, token içeriği.

Client Yapılandırması

Public client ayarları ve manuel kurulum rehberi.

Otomatik Provisioning

KeycloakProvisioning config’i ve hosted service.

Ortamlar

Dev / stage / prod farkları, BaseUrl vs PublicBaseUrl.

Sorun Giderme

Sık hatalar ve çözümleri.

Authentication

API tarafında token doğrulama.