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):
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ı.