| Ortam | Vatandaş Realm | Personel Realm | Keycloak |
|---|---|---|---|
| dev | diyanet-vatandas-dev-realm | diyanet-yonetim-dev-realm | container (localhost:8080), otomatik provisioning |
| stage | diyanet-vatandas-stage-realm | diyanet-yonetim-stage-realm | harici / paylaşımlı |
| prod | diyanet-vatandas-prod-realm | diyanet-yonetim-prod-realm | harici (müşteri) |
Dev
- Keycloak bir Docker container’ıdır (
docker-compose.override.yml,keycloak26). - API açılışta
KeycloakProvisioningile realm/client/rol/kullanıcı/mapper’ı otomatik kurar (Enabled: true,RunOnce: true). RequireHttpsMetadata: false— HTTP yeterlidir.- Tarayıcı ve API aynı
localhost:8080’i gördüğü içinBaseUrl == PublicBaseUrl.
Stage / Prod
- Keycloak genelde müşterinin harici instance’ıdır (
https://auth.diyanet.gov.tr). - Provisioning kapatılır (
Enabled: false); realm bir kez kurulup yönetilir. RequireHttpsMetadata: trueolmalı.- Realm/URL değerleri
.envüzerinden gelir.
BaseUrl vs PublicBaseUrl
Bu ayrım çift-realm doğrulamanın kalbidir (KeycloakSchemeOptions):
| Alan | Anlam |
|---|---|
BaseUrl | API’nin Keycloak’a ulaştığı URL. Docker dev’de iç ağ hostname’i olabilir (http://diyanet-keycloak:8080). JWKS metadata fetch ve Authority buradan hesaplanır. |
PublicBaseUrl | Tarayıcının gördüğü URL. Token’ın iss claim’i bunu taşır. Boşsa BaseUrl ile aynı kabul edilir. |
Hetzner paylaşımlı Keycloak
Hetzner çoklu-proje kurulumunda (docker-compose.platform.yml / .shared-infra.yml) Keycloak
platform seviyesinde paylaşımlıdır: birden fazla proje aynı Keycloak instance’ını kullanır,
her proje kendi realm çiftiyle izole olur. Bu durumda:
KEYCLOAK_BASE_URLpaylaşımlı Keycloak’ı işaret eder.- Realm isimleri proje + ortam ile ayrışır (
ProjectKeycloakIdtemplate sembolü). - Provisioning genelde kapalıdır; realm’ler bir kez platform kurulumunda hazırlanır.
Ortam doğrulama
API açılışında console’a hangi URL’lerin kullanıldığı yazılır (BuildingBlocks.Keycloak/DependencyInjection.cs):
UNREACHABLE görürseniz BaseUrl API’den erişilebilir değildir (bkz.
Sorun Giderme).
İlgili
Provisioning
Hangi ortamda otomatik kurulum açık.
Sorun Giderme
Issuer mismatch ve metadata erişim hataları.
Authentication
Issuer / audience doğrulama detayları.
Realm Yapısı
Realm ve rol yapısı.