Skip to main content
API iki ayrı Keycloak realm’ından token kabul eder. Her realm kendi kullanıcı havuzu, client’ı, rolleri ve mapper’larıyla tamamen bağımsızdır.

diyanet-vatandas-dev-realm (Vatandaş)

Vatandaş portali (Website SPA) bu realm’a bağlanır.

diyanet-yonetim-dev-realm (Personel)

Yönetim paneli (Admin SPA) bu realm’a bağlanır. Bu dört rol, uygulama tarafındaki Role enumeration’ıyla birebir eşleşir (SuperAdmin=1, Admin=2, Staff=3, ReadOnly=4) ve DB’deki role_permission seed’i bu rollere izin atar. Keycloak rolü token’a realm_access.roles / resource_access.{client}.roles olarak girer; KeycloakRoleClaimsTransformation bunları ClaimTypes.Role ve permissions claim’ine dönüştürür.

Protocol Mapper’lar

Her client’ta iki custom mapper kuruludur (User Attribute → token claim): permissions mapper’ı multivalued olmalıdır — bir kullanıcının birden fazla izni token’a ayrı değerler olarak girer. organization_id tek değerlidir ve multi-tenant izolasyonunu besler (tenant_id ile eşdeğer kabul edilir).

Identity Provider — Google (yalnız vatandaş realm’ı)

Vatandaş realm’ında Google IdP tanımlıdır:
ClientId/ClientSecret Google Cloud Console’dan alınıp .env / provisioning config’ine girilir.

Token içeriği örneği

Personel realm’ından Admin rollü bir kullanıcının access token’ının ilgili kesiti (MapInboundClaims=false ile claim isimleri korunur):
API tarafında KeycloakRoleClaimsTransformation bu yapıyı normalize eder; ardından UserContextClaimsTransformation DB’den user_id, eksik permissions ve account_status claim’lerini ekler (bkz. Authentication).

İlgili

Client Yapılandırması

Client ayarları ve manuel kurulum.

Provisioning

Bu yapının otomatik kurulumu.

Authorization

Rollerin izinlere haritalanması.

Multi-Tenancy

organization_id ile tenant izolasyonu.