Skip to main content
Bu sayfa hem client ayarlarının ne anlama geldiğini hem de Keycloak’ı elle kurmak için adım adım rehberi içerir. Dev’de bu işi normalde otomatik provisioning yapar; manuel kurulum, provisioning kapalıyken veya harici bir Keycloak’ta lazım olur.

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-realmdiyanet-website, diyanet-yonetim-dev-realmdiyanet-admin).
1

Realm oluştur

http://localhost:8080 → Administration Console → giriş (admin / .envKEYCLOAK_ADMIN_PASSWORD). Sol üst master menüsü → Create Realm → Realm name: diyanet-yonetim-dev-realmCreate.
2

Client oluştur

Clients → Create clientNext → 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 = S256Save.
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/swaggerAuthorize. 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’ta password 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:
Aldığınız access token’ı https://jwt.io ile açınca realm_access.roles, permissions[] ve organization_id claim’leri görünmelidir (bkz. Realm Yapısı).
Geçici olarak Direct access grants açıp password grant ile token almak teşhis için pratiktir, ama dev dışında kapalı tutun.

appsettings karşılığı

Manuel kurulan değerler appsettings.Development.jsonKeycloak 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ı.