yeke.io · dokümanlar · enterprise
OIDC ile Giriş (SSO)
Enterprise ile Keycloak veya Entra ID gibi bir OIDC sağlayıcısını bağlayın. Kullanıcılar SSO ile giriş yaparken yerel hesaplar da kullanılabilir. Rehber; sağlayıcı ayarlarını, redirect URI’yi ve grup eşlemeyi kapsar.
Genel bakış
Giriş ekranında bir düğme daha; parolalı yol yerinde kalır.
Kullanıcı SSO düğmesiyle sağlayıcının giriş ekranına gider. Parola YEKE’ye gönderilmez. Kimlik doğrulandıktan sonra YEKE oturumu açılır. Akış Authorization Code + PKCE kullanır.
Yerel kullanıcı adı + parola formu kaybolmaz. Bu bir eksiklik değil, acil erişim yoludur: kurulum sahibi (owner) her koşulda yereldir, dolayısıyla sağlayıcı erişilemez ya da yanlış yapılandırılmış olduğunda yerel yönetici girişi açık kalır.
SSO düğmesi giriş ekranında yalnız iki koşul birlikte sağlandığında çizilir: etkin bir
sağlayıcı tanımlı olmalı ve lisans Enterprise sso kalemini taşımalı. Bu
kalem Active Directory / LDAP girişiyle paylaşılır — yeni bir
lisans bayrağı yok ve ikisi aynı anda etkin olabilir.
Sağlayıcıyı tanımlama
Yönetici ekranından tek bir sağlayıcı tanımlanır; kaydetmeden önce bağlantı gerçekten test edilir.
| Alan | Ne işe yarar |
|---|---|
label | Giriş ekranındaki düğmenin metni. Kullanıcının gördüğü tek ad budur. |
issuer | Sağlayıcının kimlik adresi; https
zorunludur. Sağlayıcının discovery belgesindeki issuer değeriyle
birebir aynı olmalı — sondaki eğik çizgi dâhil. |
clientId | Sağlayıcı tarafında YEKE için açtığınız istemcinin kimliği. |
clientSecret | İstemci sırrı; zorunludur. Yalnız yazılır: hiçbir yanıtta geri dönmez, yanıt yalnızca tanımlı olup olmadığını söyler. |
caCertPem | Opsiyonel. Sağlayıcının sertifikası özel bir kurum CA'sıyla imzalıysa PEM olarak buraya eklenir. Sertifika bir sır değildir, şifrelenmeden saklanır. |
usernameClaim | Kullanıcı adının okunacağı claim. Varsayılan
preferred_username; email de seçilebilir. |
groupsClaim | Grupların okunacağı claim. Varsayılan
groups. |
adminGroup | Opsiyonel. Tanımlıysa bu grubun üyeleri her
girişte admin rolünü alır. |
| Ek scope'lar | Sağlayıcıdan varsayılanların dışında istemeniz gereken scope'lar. |
label : Kurumsal hesap issuer : https://kimlik.ornek.com/realms/kurum client id : yeke client secret : (yalnız yazılır) username claim : preferred_username groups claim : groups admin group : yeke-admins
Kaydetmeden önce "Bağlantıyı test et" düğmesi sağlayıcının discovery belgesini gerçekten çeker, uçları çözer ve kayda yazar. Test başarısız olursa sebep ekranda görünür; kayıt yine de saklanır ama etkinleştirilmez.
Aynı anda tek etkin sağlayıcı olabilir.
Yanlış istemci sırrı artık IDP_CLIENT_REJECTED koduyla görünüyor
Sağlayıcı girişin son adımında istemci sırrını reddederse YEKE bunu artık kendi hata
koduyla gösteriyor — önce genel bir "kimlik sağlayıcısına ulaşılamıyor" mesajı
veriliyordu. Entra ID'de en sık sebep Secret ID ile Value sütununun karıştırılmasıdır:
kopyalanması gereken Value sütunudur, Secret ID değil. İstemci kimliği (Client ID)
yanlışsa hata daha YEKE'ye dönmeden, Microsoft'un giriş sayfasında görünür
(AADSTS700016).
Yönlendirme adresi (redirect URI)
Adres YEKE'nin kendi genel adresinden türer, gelen isteğin başlığından değil.
Sağlayıcıdan dönüş adresi YEKE_PUBLIC_URL değerinin sonuna
/api/auth/oidc/callback eklenerek kurulur. Bu adres sağlayıcı tarafında
tam olarak böyle kayıtlı olmalıdır.
YEKE_PUBLIC_URL : https://yeke.ornek.com yönlendirme adresi : https://yeke.ornek.com/api/auth/oidc/callback
YEKE_PUBLIC_URL tanımlı değilse yapılandırma reddedilir
Redirect URI, istek başlığından değil YEKE_PUBLIC_URL değerinden oluşturulur. Bu ayar zorunludur; boşsa OIDC yapılandırması reddedilir. Kurulum ayarları →
Keycloak yalnız sondaki * karakterini joker sayar
Redirect URI’yi sağlayıcıya tam adres olarak kaydedin. Adresin ortasında wildcard kullanmayın: örneğin https://sunucu:*/yol Keycloak’ta eşleşmez ve invalid_redirect_uri hatası verir.
Roller ve Kubernetes grup eşlemesi
Grup claim'i dizin tarafıyla aynı eşleme listesine yazılır; OIDC için ayrı bir liste yok.
Rol dizinden türeyebilir
Sağlayıcı kaydında isteğe bağlı bir yönetici grubu (adminGroup)
tanımlayabilirsiniz. Tanımlıysa kullanıcının rolü her girişte token’daki grup claim'inden
yeniden türer ve o kullanıcının rolünü arayüzden yazmak reddedilir — aksi hâlde yazdığınız
değişikliği bir sonraki giriş sessizce ezerdi. Tanımlı değilse rol her zamanki gibi YEKE'nin
kullanıcı ekranından yönetilir.
Kubernetes kimliği: dizinle aynı liste
Yetkilendirme ve RBAC sayfasındaki cluster kuralı + kişisel bağlama modeli aynen geçerlidir. Jetondaki grup claim'i, cluster kimlik kuralındaki aynı eşleme listesine yazılır: LDAP için ayrı, OIDC için ayrı bir liste yoktur. Tek liste hem LDAP grup DN'lerini hem OIDC'nin düz grup adlarını taşır.
kaynak grup Kubernetes grubu CN=YEKE-Operators,OU=Gruplar,DC=ornek,DC=com → yeke:cluster-admins (LDAP) yeke-operators → yeke:cluster-admins (OIDC) 3f2b9c14-8a71-4d0e-9c53-6b7a1e5d20f4 → odeme-nobet (OIDC)
Keycloak: grup eşleyicide "full path" kapalı olmalı
Keycloak'ın grup eşleyicisi grubun tam yolunu (/ust-grup/alt-grup) basabilir.
Eşleme listesine düz grup adı yazacaksanız bu seçenek kapalı olmalı — claim'e düz adın basması
buna bağlı.
Entra ID grup claim'inde GUID basar
Entra ID grup claim'ine grubun adını değil GUID'ini koyar; eşleme satırının sol tarafına yazacağınız değer o GUID'dir. Satıra opsiyonel bir etiket yazılabilir — yalnız GUID'lerden oluşan bir liste okunamaz hâle geliyor.
Entra ID'de uygulama kaydı
Microsoft Entra ID'yi sağlayıcı olarak bağlamadan önce Entra tarafında bir uygulama kaydı açmanız gerekir: uygulama kaydı, istemci sırrı, yönetici grubu ve token'daki grup ayarının tamamı adım adım Entra ID ile SSO Kurulumu sayfasında.
İlk giriş: otomatik kullanıcı oluşturma ve lisans koltuğu
Sağlayıcıdaki kimseyi YEKE'ye önceden davet etmeniz gerekmiyor.
- Otomatik oluşturma (JIT). Sağlayıcıda doğrulanan ama YEKE'de henüz kaydı olmayan kullanıcı, ilk başarılı girişte otomatik olarak oluşturulur.
- Koltuk tüketir. Otomatik oluşan kullanıcı, elle oluşturulmuş biri gibi bir lisans koltuğu tüketir. Koltuk tavanı doluysa giriş açık bir kodla reddedilir.
- Kullanıcı adı claim'den gelir. YEKE'nin sakladığı ad,
usernameClaimile seçtiğiniz claim'in değeridir; kullanıcı listesinde ve denetim izinde görünen ad budur. - Aynı ada sahip bir hesap varsa giriş reddedilir. Gelen kullanıcı adı var olan bir yerel ya da LDAP hesabıyla çakışıyorsa giriş gürültülü bir hatayla durur; OIDC kullanıcısı sessizce o hesaba bağlanmaz. Sessiz bağlama hesap devralma sınıfına giren bir davranıştır.
İkinci faktör
OIDC kullanıcısı için ikinci faktörün otoritesi IdP'dir.
- OIDC kullanıcısı YEKE'nin kendi TOTP'sini kaydedemez. İkinci faktörü kimin isteyeceğine sağlayıcı karar verir; YEKE aynı kullanıcı için ikinci bir faktör kaydı açmaz.
- Yerel hesaplarda değişen bir şey yok. YEKE'nin kendi ikinci faktörü yerel kullanıcılar için aynen durur.
Sınırlar
Desteklenen özellikler ve sınırlamalar.
- SAML ve SCIM yok. Bu sayfadaki her şey OIDC içindir; SAML ile SCIM talebe göre planlanan kuyrukta.
- Entra ID ile uçtan uca giriş gerçek bir kiracıya karşı denendi. Grup nesne
kimliği (GUID) → rol ve Kubernetes grup eşlemesi de aynı testin parçasıydı; bu, 0.46.1 ile
geldi — önceki sürümler Entra ID'yi sağlayıcı olarak kaydedemiyordu. Hâlâ
doğrulanmayanlar: çok sayıda gruba üye bir kullanıcıda Entra'nın "groups overage"
davranışı ve bir uygulama kaydı yeniden oluşturulduğunda kullanıcı kimliğinin
(
sub) değişip değişmediği. - Entra "groups overage" durumunda giriş reddedilir. Kullanıcı çok fazla grupta olduğunda Entra ID grup claim'ini hiç basmaz. YEKE bu durumda girişi reddeder; boş bir grup kümesiyle sessizce devam etmez, çünkü o yol kullanıcıyı hiçbir hata vermeden yetkisiz bırakırdı.
- Aynı anda tek etkin sağlayıcı. Birden fazla OIDC sağlayıcısını aynı anda etkin tutma yoktur.
- IdP oturumu kapandığında YEKE oturumu kendiliğinden kapanmaz. Back-channel logout yoktur: YEKE kendi oturumunu tutar, sağlayıcının token'ı yalnız giriş anında kullanılır ve saklanmaz.
- Lisanssız kurulumda bu sayfadaki hiçbir şey çalışmaz. Sağlayıcı yapılandırması ve
OIDC girişi, Enterprise
ssokalemi olmadan açık bir hatayla reddedilir; yerel giriş bundan hiç etkilenmez.
Grup eşlemesinin karşılığını RBAC'ta görün
Sağlayıcıdan gelen gruplar burada Kubernetes gruplarına akıyor — kararı yine RBAC veriyor. Aynı listeyi besleyen dizin yolu ayrı bir sayfada.