Client ayarları (her iki SPA)
Her iki SPA da public (PKCE) client’tır:Client authentication kapalıdır (public client). Secret yoktur — tarayıcıda çalışan bir SPA
secret saklayamaz. Güvenlik PKCE (
code_challenge_method=S256) ile sağlanır.Manuel kurulum (dev)
Aşağıdaki adımlar bir realm + client için verilmiştir; iki realm için tekrarlanır (diyanet-vatandas-dev-realm → diyanet-website, diyanet-yonetim-dev-realm → diyanet-admin).
1
Realm oluştur
http://localhost:8080 → Administration Console → giriş (admin / .env → KEYCLOAK_ADMIN_PASSWORD).
Sol üst master menüsü → Create Realm → Realm name: diyanet-yonetim-dev-realm → Create.2
Client oluştur
Clients → Create client
Next → Capability config:
Next → Login settings:
Save
3
PKCE'yi zorunlu kıl
Clients → diyanet-admin → Advanced sekmesi → Advanced Settings →
Proof Key for Code Exchange Code Challenge Method =
S256 → Save.4
Token ömrünü ayarla
Realm settings → Tokens → Access Token Lifespan → personel realm’ı için
5 minutes,
vatandaş realm’ı için 2 hours. (İstenirse client override edilebilir.)5
Protocol mapper'ları ekle
Clients → diyanet-admin → Client scopes →
diyanet-admin-dedicated → Add mapper → By configuration → User Attribute.İlk mapper — permissions (multivalued):İkinci mapper —
organization_id:6
Realm rollerini oluştur
Realm roles → Create role. Personel realm’ı için sırayla:
SuperAdmin, Admin, Staff,
ReadOnly. Vatandaş realm’ı için: Citizen.7
Test kullanıcısı oluştur ve rol ata
Users → Create new user (Username, Email, Email verified ON) → Credentials → Set password
(Temporary: OFF) → Role mapping → Assign role. Listede “Filter by realm roles” seçip ilgili
rolü (örn.
Admin) ata.8
Kullanıcı attribute'larını gir
Users → (kullanıcıyı seç) → Attributes.
permissions çok-değerli olduğundan birden çok satır
eklenebilir:Save.
9
Swagger'dan login test et
API’yi başlat →
http://localhost:5005/swagger → Authorize. KeycloakPersonel bölümünde
scope’lar (openid profile email) seçili → Authorize → Keycloak login → test kullanıcısı
ile gir. Artık istekler bu token ile gider. (Swagger PKCE kullanır, secret alanı boş bırakılır.)curl ile token testi
Public + PKCE client’tapassword grant kapalıdır (DirectAccessGrantsEnabled: false),
bu yüzden token’ı tarayıcı akışıyla almak gerekir. Hızlı doğrulama için OIDC discovery’yi
kontrol edebilirsiniz:
https://jwt.io ile açınca realm_access.roles, permissions[] ve
organization_id claim’leri görünmelidir (bkz. Realm Yapısı).
appsettings karşılığı
Manuel kurulan değerlerappsettings.Development.json → Keycloak ile eşleşmelidir:
İlgili
Otomatik Provisioning
Bu adımları kod ile yapan yol.
Realm Yapısı
Roller, mapper’lar, token içeriği.
Ortamlar
Dev / stage / prod URL stratejisi.
Sorun Giderme
Redirect URI / PKCE hataları.