Kimlik Bilgisi Senkronizasyonu
Kimlik Bilgisi Senkronizasyonu, Database Provider, LDAP Active Directory, API Kimlik Sağlayıcı ve OIDC Kimlik Sağlayıcı kaynaklarındaki kullanıcıların, zamanlanmış veya elle tetiklenen bir işle otomatik olarak Kimlik Bilgisi kayıtlarına dönüştürülmesini sağlar. Böylece kimlik bilgileri her sağlayıcı için ayrı ayrı elle oluşturulmak yerine dış kaynaktan merkezi olarak güncel tutulur.
Senkronizasyon Profili
Her kimlik sağlayıcının (Database Provider, LDAP Active Directory, API Kimlik Sağlayıcı, OIDC Kimlik Sağlayıcı — yalnızca Keycloak sağlayıcı türünde) düzenleme ekranında ayrı bir Senkronizasyon Profili sekmesi bulunur. Bu sekmedeki ortak alanlar aşağıdaki gibidir:

| Alan | Açıklama |
|---|---|
| Senkronizasyonu Etkinleştir | Etkinleştirildiğinde kimlik bilgileri, tanımlanan zamanlamaya göre bu kaynaktan senkronize edilir. Kapalıyken ne zamanlanmış ne de elle senkronizasyon çalışır. |
| Cron İfadesi | Senkronizasyonun ne sıklıkla çalışacağını belirten Quartz cron ifadesidir (örn. 0 0 2 * * ?). Boş bırakılırsa yalnızca Senkronizasyon ekranından elle tetikleme yapılabilir. |
| Deaktivasyon Modu | Son senkronizasyon koşusunda kaynakta artık hiç bulunmayan kullanıcılara — LDAP kaynağında her zaman, OIDC kaynağında Grupları Senkronize Et açıkken ise ayrıca artık bulunmayan gruplara/kurumlara — karşılık gelen kayıtlara uygulanacak işlemdir: • Devre Dışı Bırak (geri alınabilir) — kimlik bilgisi pasif hale getirilir, kaydı korunur. Varsayılan değerdir. • Sil — kimlik bilgisi ya da kurum silinmez; erişimi kesecek şekilde pasifleştirilir ve mezar taşı (tombstone) olarak işaretlenir, kayıt ve ona bağlı ilişkiler korunur. Bkz. aşağıdaki not. • Hiçbiri (olduğu gibi koru) — herhangi bir işlem yapılmaz, sapma kabul edilir. |
Sil modu, kaynakta artık hiç bulunmayan bir kimlik bilgisini ya da kurumu fiziksel olarak kaldırmaz. Kimlik bilgilerinde erişim, Devre Dışı Bırak ile aynı şekilde kesilir; farkı, kaydın ayrıca kalıcı olarak "artık geçerli değil" (mezar taşı) damgası taşımasıdır. Kurumlarda kayıt korunduğu için ona bağlı kimlik bilgilerinin kurum bağlantısı kopmaz — kurum silme işleminden farklı olarak bağlı kayıtlar başka bir kuruma taşınmaz. Kalıcı temizleme (kaydın veritabanından tamamen kaldırılması) bu sürümde yapılmaz; ayrı bir bakım özelliği olarak planlanmıştır.
Bu sürümden önce Sil modu kaydı kalıcı ve geri dönüşsüz olarak kaldırıyordu. Aynı ayar artık geri alınabilir bir sonuç üretir: erişim yine kesilir, yalnızca kayıt kaybolmaz.
Açılır listedeki seçenek şu an hâlâ Sil (geri dönüşsüz) olarak etiketlidir — etiket yukarıdaki değişikliğe henüz uydurulmamıştır. Etiketten bağımsız olarak geçerli davranış yukarıda anlatılandır.
Bu, Kapsamdan Çıkan Kayda Ne Olur bölümündeki Mezar taşı bırak seçeneğinden farklı bir tetikleyicidir: burası kaynakta hiç görülmeyen kayıtları, oradaki ayar ise kaynakta görülüp yalnızca kapsam filtresinin dışına düşen kayıtları kapsar. İkisi de aynı sonucu (mezar taşı) üretebilir.
Sağlayıcıya özgü ek alanlar aşağıda anlatılmıştır.
LDAP Active Directory
| Alan | Açıklama |
|---|---|
| Kök OU DN | Senkronize edilecek OU (Organizational Unit) ağacının kök DN değeridir. Örnek: OU=Users,DC=acme,DC=corp |
LDAP senkronizasyonu yalnızca kullanıcıları değil, kullanıcıların bağlı olduğu kurum/organizasyon ağacını da senkronize eder. Diğer kaynaklarda (Veritabanı, API) yalnızca kullanıcı senkronizasyonu yapılır. OIDC (Keycloak) kaynağı, Grupları Senkronize Et açıldığında kullanıcılara ek olarak grup ağacını da senkronize edebilir — aşağıya bakınız.
Database Provider
| Alan | Açıklama |
|---|---|
| Kullanıcı Listeleme Sorgusu | Senkronize edilecek kullanıcıları döndüren, parametre almayan bir SELECT sorgusudur. Dönen kolonlar için şu takma adlar kullanılmalıdır: username (zorunlu), email, full_name. Örnek: select login as username, mail as email, display_name as full_name from users |
API Kimlik Sağlayıcı
| Alan | Açıklama |
|---|---|
| Kullanıcı Listeleme URL'si | Senkronize edilecek kullanıcı listesini döndüren uç noktadır. |
| HTTP Metodu | Kullanıcı listesi uç noktası çağrılırken kullanılan HTTP metodudur. |
| Zaman Aşımı | İsteğin bu süre (saniye) sonunda sonlandırılacağını belirtir. |
| İstek Gövdesi | Kullanıcı listesi uç noktasına gönderilen isteğe bağlı istek gövdesidir (POST/PUT için). |
| İstek Başlıkları | Kullanıcı listesi isteğiyle birlikte gönderilecek isteğe bağlı HTTP başlıklarıdır (örn. Authorization). |
| Kullanıcı Dizisi JSON Path | Yanıt içindeki kullanıcı dizisine giden JSON Path ifadesidir. Varsayılan değer: $ |
| Kullanıcı Adı JSON Path | Bir kullanıcı öğesinden kullanıcı adına giden JSON Path ifadesidir. Zorunlu alandır. |
| E-posta JSON Path | Bir kullanıcı öğesinden e-postaya giden JSON Path ifadesidir. |
| Ad Soyad JSON Path | Bir kullanıcı öğesinden ad soyada giden JSON Path ifadesidir. |
OIDC Kimlik Sağlayıcı (Keycloak)
Yalnızca Sağlayıcı Türü Keycloak olan OIDC Kimlik Sağlayıcı kayıtlarında kullanılabilir; Generic sağlayıcı türünde senkronizasyon alanları anlamlı değildir (bkz. OIDC Kimlik Sağlayıcı).
| Alan | Açıklama |
|---|---|
| Realm | Keycloak realm adıdır. |
| Admin API Taban URL | Keycloak sunucusunun taban adresidir. |
| Senkron İstemci ID | Keycloak Admin API'sini çağırmak için kullanılan, service-account yetkilerine sahip istemcidir. |
| Senkron Sayfa Boyutu | Kullanıcılar Keycloak Admin API'sinden sayfalanarak (paged) çekilirken kullanılan sayfa boyutudur. |
| Grupları Senkronize Et | Açıkken Keycloak grup ağacı, kullanıcıların bağlı olduğu Kurumlar yapısına da yansıtılır. |
| Rol Senkron Kaynağı | Kullanıcıların rol/grup üyeliğinin hangi kaynaktan çekileceğini belirler: Realm Rolleri, İstemci Rolleri veya Gruplar. |
Kullanıcı adı kontratı: senkronizasyon, Keycloak'taki kullanıcı adını (username) doğrudan Kimlik Bilgisi kaydının kullanıcı adına yazar. OIDC politikalarındaki token doğrulaması ise varsayılan olarak preferred_username claim'ini okur — bu iki değer aynı kullanıcı için eşleşmelidir, aksi halde doğrulanan token hiçbir Kimlik Bilgisi kaydıyla eşleşmez.
Senkronizasyon Kapsamı
Bir kaynak varsayılan olarak okuyabildiği her şeyi senkronize eder. Aynı sekmedeki Senkronizasyon Kapsamı kartı bu kümeyi daraltır: Kullanıcılar, Gruplar / Organizasyonlar (yalnız LDAP ve OIDC) ve Roller (yalnız OIDC) için ayrı kabul/ret desen listeleri tanımlanır.
| Alan | Açıklama |
|---|---|
| Desen Tipi | Glob — * istediğiniz sayıda karakteri (/ ayracı dahil), ? tam olarak bir karakteri karşılar; diğer tüm karakterler literaldir, yani desendeki bir . ya da ( gerçekten o karakter demektir. Düzenli İfade — desen yazıldığı gibi derlenir; aşağıdaki uyarıya bakınız. |
| Eşleştirilen Alan | Desenlerin kaydın hangi alanına uygulanacağı. Kullanıcılar tüm kaynaklarda kullanıcı adı, e-posta ya da ad soyad üzerinden; LDAP ve OIDC'de ayrıca dış kimlik üzerinden; LDAP'ta DN (yol) üzerinden de eşleştirilebilir. Gruplar yol ya da ad, roller ad üzerinden eşleştirilir. |
| Büyük/Küçük Harf Duyarlılığı | Varsayılan olarak kapalıdır: desenler harf durumundan bağımsız eşleşir. |
| Kabul Desenleri | Boş olduğu sürece tüm kayıtlar adaydır. En az bir desen girildiğinde bir kaydın kapsamda kalması için bunlardan biriyle eşleşmesi gerekir. |
| Ret Desenleri | Bunlardan biriyle eşleşen kayıt, bir kabul deseniyle de eşleşse bile elenir — ret her zaman kazanır. |
Desen değerin bir parçasıyla değil tamamıyla eşleşir: admin deseni yalnız admin adlı kullanıcıyı karşılar; içinde "admin" geçen tüm kullanıcı adları için *admin* yazılır.
Eşleştirilen alan Yol olduğunda hem kaydın değeri hem de desen karşılaştırmadan önce normalize edilir; böylece bir LDAP DN'i ile bir Keycloak grup yolu aynı biçime iner: CN=Dev,OU=Eng,DC=acme,DC=corp ve /Eng/Dev ikisi de /Eng/Dev olur. Dolayısıyla tek bir desen her kaynakta aynı anlamı taşır ve deseni hangi yazımda tanımladığınız fark etmez — ou=eng,dc=acme ile /Eng/* eşit derecede geçerlidir.
Filtre desenleri koşunun en başında bir kez derlenir. Derlenemeyen, 512 karakterden uzun ya da değerlendirilmesi güvenli bulunmayan (eşleşmeyen girdide üstel sürede çalışabilecek yapıdaki) bir desen koşuyu Ba şarısız ile bitirir — koşu, filtre yokmuş gibi devam etmez. Filtresiz devam etmek, bir ret deseninin elemesi gereken herkesi yeniden kapsama alırdı; iki sonuçtan tehlikeli olanı budur. Glob'lar da aynı denetimden geçer, çünkü *a*a*a*a*b gibi bir desen çevrildikten sonra en az onun kadar pahalıdır.
Kapsamdan Çıkan Kayda Ne Olur
Kaynakta hâlâ var olan ama artık filtreyle eşleşmeyen bir kullanıcı, kaynaktan silinmiş sayılmaz. Kimlik bilgisi koşu tarafından görülmüş olarak damgalanır — böylece uzlaştırma adımı onu bayat saymaz — ve kaderini Kapsam Çıkışı Politikası belirler:
| Politika | Etkisi |
|---|---|
| Olduğu gibi bırak (varsayılan) | Kimlik bilgisine dokunulmaz. |
| Pasifleştir | Kimlik bilgisi pasifleştirilir, kayıt korunur. |
| Mezar taşı bırak | Kimlik bilgisi mezar taşı (tombstone) olarak işaretlenir. |
Elle oluşturulmuş bir kimlik bilgisine ve başka bir kimlik kaynağına ait bir kayda bu politika hiçbir zaman dokunmaz — senkronizasyonun genelinde geçerli olan korumalar burada da geçerlidir.
Bir koşuda filtrenin kaç kaydı elediği, koşu geçmişindeki Elenen sütununda görünür. Elenen kullanıcılar için kullanıcı bazlı hata kaydı yazılmaz: on binlerce kullanıcıyı eleyen bir kapsam daraltması, koşunun hata listesini doldurup gerçek eleme gerekçelerini ekrandan silerdi.
Uzlaştırma Emniyet Ağı
Kapsam filtresinin altındaki alanlar, uzlaştırmanın ne yapmaya yetkili olduğunu belirler.
| Alan | Açıklama |
|---|---|
| Kapsam Çıkışı Politikası | Kapsamdan çıkan kayda ne olacağı — bkz. yukarıdaki bölüm. Varsayılan: Olduğu gibi bırak. |
| Deaktivasyon Eşiği (%) | Deaktive edilecek kayıtlar, kaynağın yönettiği kayıtların bu oranını aştığında uzlaştırma koşmaz ve onay bekler — bkz. Deaktivasyon Eşiği ve Uzlaştırma Onayı. Varsayılan: %20. |
| Deaktivasyon Eşiği (adet) | Aynı kontrolün mutlak sayı ile hâli. Varsayılan 0'dır ve yalnız yüzde kontrolünü etkin bırakır. |
| Kaynak kararlı bir dış kimlik döndürmüyorsa deaktive etme ve silme | Varsayılan olarak kapalıdır. Aşağıdaki uyarıya bakınız. |
Uzlaştırma, bir kullanıcının artık olmadığına koşuda onu görmeyerek karar verir. Kararlı bir dış kimlik — kullanıcı yeniden adlandırıldığında değişmeyen bir kimlik — yoksa elde tek anahtar kullanıcı adıdır; kaynakta yeniden adlandırılan bir kullanıcı kaybolmuş görünür ve yıkıcı uzlaştırma bu görüntünün üzerine iş yapar.
Bugün hangi kaynak böyle bir kimlik döndürüyor:
| Kaynak | Kararlı dış kimlik |
|---|---|
| OIDC (Keycloak) | Var — kullanıcının Keycloak UUID'si. |
| LDAP / Active Directory | Yalnız kullanıcı nesne sınıfı için çekilen öznitelikler arasına kararlı bir öznitelik (entryUUID, objectGUID gibi) eklendiğinde. Senkronizasyon bunu kendiliğinden istemez — mevcut dizin sorgularını değiştirmek başlı başına bir davranış değişikliği olurdu. |
| Veritabanı | Yok — kullanıcı listesi sorgusu sözleşmesinde kimlik kolonu bulunmaz. |
| API | Yok — yanıt eşlemesinde kimlik alanı bulunmaz. |
Bu sürümde mevcut davranış korunmuştur. Kararlı kimliği olmayan bir kaynak, eskisi gibi pasifleştirmeye ve silmeye devam eder; koşu yalnızca hata listesine bir uyarı yazar, böylece risk oluştuğu yerde görünür olur. Kaynak kararlı bir dış kimlik döndürmüyorsa deaktive etme ve silme ayarı açıldığında ise uzlaştırma, kullanıcı adının üzerine iş yapmak yerine o kaynakta durur.
Bu opsiyonel ayarın gelecek bir ana sürümde varsayılan hâline gelmesi planlanmaktadır. Kararlı kimliğin hiç elde edilemediği Veritabanı ve API kaynaklarında ayarı şimdiden açmak güvenli taraftır.
Senkronizasyon Durumu ve Geçmişi
Kimlik > Sağlayıcılar > Senkronizasyon menüsünden açılan ekranda LDAP, Veritabanı, API ve OIDC kaynakları ayrı sekmelerde listelenir. Her satırda aşağıdaki bilgiler görüntülenir:

| Alan | Açıklama |
|---|---|
| Ad | Kimlik sağlayıcının adıdır. |
| Zamanlama | Tanımlı cron ifadesidir. |
| Durum | İşin durumudur: Zamanlanmış, Çalışıyor, Duraklatılmış, Beklemede, Tamamlandı, Hata veya Tanımsız (henüz koşmadı). |
| Son Senkronizasyon | Son koşunun tamamlanma zamanıdır. |
| Eklenen/Güncellenen, Deaktif Edilen, Atlanan, Hata | Son koşuda işlenen kayıt sayılarıdır. |
| Sonuç | Son koşunun sonucudur: Başarılı, Uyarı veya Başarısız. |
Bu ekrandaki Senkronize Et düğmesi ile ilgili kaynak için senkronizasyon zamanlaması beklenmeden anında tetiklenebilir.
Senkronize Et koşuyu arka planda başlatır ve hemen döner — düğmeye basıldığı andaki sayılar henüz bir önceki koşuya aittir.
Koşu kaydı ise beklemez: düğmeye basıldığı anda Senkronizasyon Geçmişi tablosunda Kuyrukta durumunda bir satır doğar, koşu başlayınca Çalışıyor olur ve bittiğinde sonucunu alır. Böylece hiç başlayamamış bir koşu bile ekranda görünür.
Sonucu görmek için bu ekranda elle tazeleme gerekmez: geçmiş tablosu çalışan koşuyu canlı olarak takip eder ve koşu bittiği anda yukarıdaki kaynak satırlarının özet sayıları da kendiliğinden güncellenir. Tetikleme sonrası görünen bilgi mesajı da bunu söyler; artık kullanıcıdan tabloyu yenilemesi istenmez.
Senkronizasyonu kapatılmış (Senkronizasyonu Etkinleştir alanı pasif) bir kaynak için Senkronize Et işlemi de çalıştırılamaz.
Tek bir kimlik bilgisi veya kurum kaydının detay ekranından da Senkronize Et düğmesiyle senkronizasyon tetiklenebilir. Bu, buradaki Senkronize Et ile aynı işlemi başlatır — yalnızca o tek kaydı değil, kaydın bağlı olduğu kaynak sağlayıcının tamamını senkronize eder.
Elle Koşunun Kapsamını Seçme
LDAP ve OIDC kaynaklarında Senkronize Et düğmesi bir kapsam menüsü taşır; düğmenin kendisine basmak yine tam senkronizasyon başlatır.
| Kapsam | Ne yapar |
|---|---|
| Tam | Kullanıcılar, grup/organizasyon ağacı ve roller, ardından uzlaştırma. Zamanlanmış koşular her zaman bunu yapar; Senkronize Et düğmesi de bu sürümden önce bunu yapıyordu. |
| Yalnız kullanıcı | Yalnızca kullanıcıları okur. Grup/organizasyon ağacı okunmadığı için uzlaştırılmaz da; kullanıcılar hiçbir şey çekmemiş bir geçiş yüzünden temizlenmek yerine mevcut organizasyon ve rollerini korur. Kaynakta pasifleştirilen bir kullanıcı yine pasif olarak yansıtılır. |
| Yalnız grup | Yalnızca grup/organizasyon ağacını okur. Hiçbir kullanıcı okunmaz ve yazılmaz; yalnız organizasyon uzlaştırması çalışır. |
Veritabanı ve API kaynakları yalnız kullanıcı senkronize ettiği için bu kaynaklarda düğmenin menüsü yoktur. Bir koşunun kapsamı koşu geçmişindeki Kapsam sütununda görünür; bu sürümden önce kaydedilmiş satırlar Tam görünür, çünkü o koşular gerçekten tam koşuydu.
Koşu kapsamının taşıdığı ayrım "çekildi ve boş geldi" ile "hiç çekilmedi" arasındadır. Yalnız kullanıcı koşan bir koşu grup ağacını okumaz, dolayısıyla organizasyonlar ve roller hakkında bir şey söylemez ve motor ikisine de dokunmaz. Ağacı okuyup kullanıcıyı hiçbir grupta bulmayan tam bir koşu ise bunu söylemiş olur ve kullanıcının organizasyonu — hep olduğu gibi — temizlenir.
Senkronizasyon Koşu Geçmişi
Yukarıdaki tablo yalnızca son koşunun özetini gösterir — her yeni koşu bir öncekinin üzerine yazılır. Bunun yanında, her koşu (zamanlanmış veya elle tetiklenmiş; başarılı, uyarılı, başarısız ve yapılandırma hatası yüzünden hiç başlayamamış olanlar dahil) kalıcı olarak da kaydedilir ve Senkronizasyon Geçmişi kartında ayrı bir satır olarak listelenir.
Senkronizasyon Geçmişi kartı iki ekranda görüntülenir:
- Kimlik > Sağlayıcılar > Senkronizasyon ekranının altında — projedeki tüm kaynakların koşuları, Kaynak sütunuyla birlikte.
- Her sağlayıcının görüntüleme (view) ekranının altında (Database Provider, LDAP Active Directory, API Kimlik Sağlayıcı, OIDC Kimlik Sağlayıcı) — yalnızca o kaynağın koşuları, Kaynak sütunu olmadan.
Tablo sütunları:
| Sütun | Açıklama |
|---|---|
| Kaynak (yalnızca genel ekranda) | Koşunun ait olduğu kimlik sağlayıcının adı ve türü (LDAP / Veritabanı / API / OIDC). Geçmişteki kaynak adı, koşu anında alınmış bir kopyadır. Sağlayıcı sonradan yeniden adlandırılsa da geçmiş satırı eski adı korur. Sağlayıcı silindiğinde ise ona ait koşu geçmişi ve hata listeleri birlikte silinir. |
| Başlangıç | Koşunun kuyruğa alındığı zaman; satır bu anda doğar. |
| Süre | Koşunun gerçek yürütme süresidir — kuyrukta beklenen süre bu değere dahil edilmez. |
| Tetikleyici | Zamanlanmış veya Elle. Elle tetiklenen koşularda, koşuyu tetikleyen kullanıcının adı da bu sütunda görüntülenir. |
| Kapsam | Koşunun neyi kapsadığı: Tam, Yalnız kullanıcı, Yalnız grup veya Uzlaştırma uygulama — bkz. Elle Koşunun Kapsamını Seçme. Bu sürümden önce kaydedilmiş satırlar Tam görünür. |
| Sonuç | Koşunun o anki durumu: Kuyrukta, Çalışıyor, Başarılı, Uyarı, Başarısız, Yarıda Kaldı, İptal Edildi veya Uzlaştırma Onayı Bekliyor. Anlamları için Koşu Yaşam Döngüsü bölümüne bakınız. Koşu bu durumlardan biriyle başarıyla sonuçlanamadıysa, durum rozetinin yanında nedeni özetleyen bir sebep rozeti de görünür — bkz. Başarısızlık Sebebi Rozeti. |
| Eklenen/Güncellenen, Değişmeyen, Deaktif Edilen, Atlanan, Hata | Koşuda işlenen kayıt sayıları — Değişmeyen için bkz. Değişmeyeni Atlama. |
| Elenen | Senkronizasyon kapsam filtresinin elediği kayıt sayısıdır. Filtre var olmadan önce çalışmış koşularda bu sütun 0 değil - görüntülenir: "bilinmiyor" ile "hiçbiri elenmedi" aynı şey değildir. |
| Hata/Uyarı | Bu koşuda kaydedilen kullanıcı bazlı hata ve eleme sayısıdır. Sayının üzerine tıklanarak satır genişletilir ve gerekçeler listelenir — bkz. Koşu Hata Listesi. Hata listesi tutulmaya başlamadan önce çalışmış eski koşularda bu sütun - görüntülenir. |
| Gerekçe | Koşunun sonucuna dair açıklama. |
| İşlemler | Bekleyen bir uzlaştırma onayı hâlâ onaylanabilir durumdayken Uzlaştırmayı Onayla düğmesini, koşu Kuyrukta ya da Çalışıyor durumundayken İptal düğmesini taşır — bkz. Deaktivasyon Eşiği ve Uzlaştırma Onayı ve İptal. |
Tablo sunucu taraflı sayfalanır (10 / 20 / 50 satır seçenekleriyle). Ekranın üst tarafındaki Senkronizasyon Durumu ve Geçmişi tablosu bu değişiklikten etkilenmez, aynen çalışmaya devam eder.
Uyarı durumu, koşunun hatasız tamamlandığı ama uzlaştırma adımının güvenlik gereği o koşuda hiç çalışmadığı anlamına gelir. İki nedeni olabilir:
- Kaynaktan hiç kullanıcı okunamadı. Bu koşuda ne ekleme/güncelleme ne de deaktivasyon yapılır. Kullanıcı arama filtresini, base DN'i veya sorgu ayarlarını kontrol edin.
- Kullanıcı listesi tam okunamadı. Dizin sunucusu sayfalı sonuçları desteklemediği (ya da kullanılmasına izin vermediği) için yalnızca ilk sayfa okunabilmiştir. Okunabilen kayıtlar normal şekilde eklenir/güncellenir; atlanan tek adım deaktivasyondur — çünkü kısmi bir liste, okunmamış sayfalardaki her kaydı kaynakta artık yokmuş gibi gösterirdi. Aynı kural, dizinden okunan tek bir kayıt bile dönüştürülemediğinde de geçerlidir: koşu eksik sayılır ve devre dışı bırakma/silme atlanır. Bkz. LDAP Active Directory.
Her iki durumda da amaç aynıdır: olası bir kaynak kesintisinin ya da eksik bir okumanın tüm kimlik bilgilerini toplu olarak deaktif etmesini önlemek (bkz. Davranış ve Güvenlik Notları).
Kaynağa hiç bağlanılamayan veya yapılandırma hatası yüzünden ön kontrolde elenen koşular da geçmişe yazılır. Bir senkronizasyonun neden çalışmadığını araştırırken genellikle aranan bilgi bu satırlardadır.
Koşu satırı tetiklemeden önce oluşturulduğu için, zamanlayıcı hiç tetiklenemediğinde de bir satır kalır: o satır Başarısız sonucunu ve gerekçesini taşır. Eskiden bu durumda ekranda hiçbir iz kalmıyordu.
Koşu Yaşam Döngüsü
Her koşu Kuyrukta durumunda doğar, bir Manager düğümü tarafından devralındığında Çalışıyor olur ve sonunda bir sonuç durumuna geçer. Sonuç durumları geriye dönmez — bir koşu sonuçlandıktan sonra durumu değişmez.
| Durum | Anlamı |
|---|---|
| Kuyrukta | Koşu kaydedildi, zamanlayıcı tetiklendi, henüz hiçbir düğüm işi almadı. |
| Çalışıyor | Bir Manager düğümü koşuyu yürütüyor. Düğüm çalıştığı sürece — kaynaktan ilk okuma dahil her aşamada — düzenli olarak yaşam sinyali basar. Bu yüzden okunması on dakikayı aşan büyük bir kaynak (on binlerce kullanıcı) terk edilmiş koşu sanılmaz. |
| Başarılı | Koşu tamamlandı; ekleme/güncelleme ve (tanımlıysa) deaktivasyon adımları çalıştı. |
| Uyarı | Koşu hatasız bitti ama uzlaştırma adımı güvenlik gereği hiç çalışmadı — yukarıdaki Uyarı sonucu ne anlama gelir kutusuna bakınız. |
| Başarısız | Koşu hata aldı, ön kontrolde elendi ya da tetiklenemedi. |
| Yarıda Kaldı | Koşu tamamlanmadan sustu: onu yürüten düğümden yaşam sinyali gelmeyi kesti (düğüm yeniden başlatıldı, kapatıldı ya da ağdan koptu). Sayaçları eksik olabilir. |
| İptal Edildi | Koşu, Kuyrukta ya da Çalışıyor durumundayken bir yönetici tarafından elle durduruldu — bkz. İptal. |
| Uzlaştırma Onayı Bekliyor | Koşu hatasız bitti ve ekleme/güncelleme adımı çalıştı, ancak deaktive edilecek kayıt sayısı deaktivasyon eşiğini aştığı için uzlaştırma adımı hiç çalışmadı: bir yöneticinin onayı bekleniyor. Hiçbir kayıt deaktive edilmedi veya silinmedi. Bkz. Deaktivasyon Eşiği ve Uzlaştırma Onayı. |
Beş dakikada bir çalışan bir bakım görevi, bitmemiş koşuları tarar. Yaklaşık on dakikadır yaşam sinyali gelmeyen bir Çalışıyor koşu ile yaklaşık on beş dakikadır hiçbir düğümün devralmadığı bir Kuyrukta koşu Yarıda Kaldı olarak işaretlenir ve kaynak yeniden senkronize edilebilir hale gelir.
Müşteri ortamında bu iki durumu ayırt etmek için INFO seviyesindeki Manager uygulama logu yeterlidir: bakım görevi işaretlediği her koşu için bir WARN satırı yazar — Identity sync run <id> ... marked INTERRUPTED: no heartbeat for <n>s (lastHeartbeatAt=..., phase=..., processed=...) — koşunun kendisi ise fetch starting, her faz için (gruplar, roller, kullanıcılar) kaynağa atılan istek sayısı ve geçen süreyle birer ... phase complete satırı ve fetch complete yazar. Beş saniyeden uzun süren bir kaynak isteği yolu ve süresiyle SLOW Keycloak admin read olarak loglanır. fetch starting var ama ardından hiçbir phase complete gelmiyorsa ve düğüm çalışmaya devam ettiyse kaynak çok yavaş yanıt veriyordur; log tamamen kesildiyse düğüm durmuştur. Birden fazla Manager kopyası varsa her kopyanın logu incelenmelidir.
Bu işaretleme kaynağın son senkronizasyon sayaçlarına dokunmaz: yarıda kalan koşu hiç sayaç üretmediği için önceki koşunun sayıları olduğu gibi kalır, yanıltıcı bir "sıfır" yazılmaz.
Uzlaştırma Onayı Bekliyor durumundaki koşular bu taramaya girmez. O koşu ölmemiştir, bitmiştir — yalnızca uygulanmamış bir kararı vardır. Aksi halde yöneticiye onay için tanınan süre on dakikada "yarıda kaldı"ya dönerdi.
Başarısızlık Sebebi Rozeti
Koşu Başarısız, Yarıda Kaldı ya da İptal Edildi durumuyla sonuçlandığında, koşu geçmişindeki durum rozetinin yanında, nedeni özetleyen ikinci bir sebep rozeti görünür:
| Sebep Rozeti | Ne zaman görünür | Ne yapılmalı |
|---|---|---|
| Erişilemiyor | Kaynağa ağ, DNS veya TLS düzeyinde ulaşılamadı. | Kaynağın adresini, ağ erişimini ve sertifikasını kontrol edin. |
| Zaman aşımı | Bağlantı ya da okuma isteği tanımlı süre içinde tamamlanmadı. | Kaynağın yanıt süresini ve tanımlı zaman aşımı değerlerini gözden geçirin. |
| Kimlik reddedildi | Kaynak sunulan kimlik bilgilerini reddetti (HTTP 401 ya da eşdeğer bir LDAP kimlik hatası). | İlgili istemcinin/servis hesabının kimlik bilgilerini doğrulayın. |
| İzin eksik | Kaynak yetkilendirmeyi reddetti (HTTP 403 ya da eşdeğer bir LDAP yetki hatası); rozetin ayrıntısında hangi okumanın — Kullanıcılar, Gruplar veya Roller — engellendiği belirtilir. | Servis hesabına eksik izni/rolü tanımlayın. |
| HTTP hatası | Kaynak, yukarıdaki ikisi dışında bir HTTP hata durum koduyla yanıt verdi; kod rozetin ayrıntısında görünür. | Durum koduna göre kaynak tarafında araştırma yapın. |
| Yapılandırma | Koşu, kaynağa hiç gidilmeden ön kontrol aşamasında elendi (örn. eksik bağlantı bilgisi, boş bırakılmış zorunlu bir alan). | Sağlayıcının yapılandırmasını tamamlayıp koşuyu yeniden tetikleyin. |
| Yarıda kaldı | Koşuyu yürüten düğüm yaşam sinyali göndermeyi kesti. | Koşuyu yeniden tetikleyin; sık tekrarlanıyorsa düğüm kararlılığını inceleyin. |
| İptal edildi | Koşu bir yönetici tarafından elle durduruldu — bkz. İptal. | Gerekirse senkronizasyonu yeniden tetikleyin. |
| Bilinmiyor | Başarısızlık yukarıdaki sınıflardan hiçbirine uymuyor. | Gerekçe metnini ve gerekiyorsa sunucu loglarını inceleyin. |
Sınıflandırma otomatiktir: kaynaktan dönen HTTP 401 yanıtı Kimlik reddedildi, HTTP 403 yanıtı İzin eksik (ilgili okuma bilgisiyle birlikte), diğer HTTP hata durum kodları HTTP hatası olarak işlenir; kaynağa hiç ulaşılamayan (ağ/DNS/TLS) durumlar Erişilemiyor, bağlantı ya da okuma zaman aşımları Zaman aşımı olarak sınıflandırılır. LDAP kaynağındaki eşdeğer kimlik ve yetki hataları da aynı sınıflara düşer.
Rozet en olası nedeni kısa bir etiketle özetler; koşunun tam açıklaması yine Gerekçe sütununda okunur.
İptal
Kuyrukta ya da Çalışıyor durumundaki bir koşu, koşu geçmişi tablosundaki İptal düğmesiyle durdurulabilir; düğme, ilgili kimlik sağlayıcıyı yönetebilen kullanıcılara (kimlik yönetimi yetkisi) açıktır.
İptal isteği anında uygulanmaz: motor bayrağı bir sonraki sayfa sınırında görür ve kaynaktan veri çekmeyi orada keser. Kaynaktan okunan kayıtlar çekim sırasında bellekte tutulur, geldikçe yazılmaz — bu yüzden çekim sırasında gelen bir iptal onları siler: o koşudan hiçbir kayıt kimlik bilgisine ulaşmaz. Devre dışı bırakma/silme (uzlaştırma) adımı da atlanır, çünkü kısmi bir listenin kimseyi devre dışı bırakmaması gerekir.
Koşu İptal Edildi durumunda kapanır; kaynağın son senkronizasyon sonucu, tıpkı uzlaştırma atlandığında olduğu gibi Uyarı olarak görünür.
Zaten sonuçlanmış bir koşuyu (Başarılı, Uyarı, Başarısız, Yarıda Kaldı, İptal Edildi ya da Uzlaştırma Onayı Bekliyor) iptal etmeye çalışmak, çevrilmiş bir hata mesajıyla birlikte 409 ile reddedilir.
Değişmeyeni Atlama
Senkronizasyon her kullanıcı için yazdığı alanların bir parmak izini kayıtla birlikte saklar. Sonraki bir koşuda kaynaktaki hâl aynıysa kayıt yeniden yazılmaz ve gateway'lere yeniden dağıtılmaz; yalnızca kaydın "son senkron" damgası toplu olarak tazelenir. Bu şekilde işlenen ama değişmemiş kayıtlar, koşu satırındaki Değişmeyen sayacında görünür.
Sağlıklı bir tekrar koşusunda Güncellenen 0 / Değişmeyen N görmek normaldir — kaynakta hiçbir şey değişmediyse senkronizasyonun yeniden yazacağı bir şey yoktur.
Bu davranış bu sürümle gelir; parmak izi henüz hiçbir kayıtta yoktur. Yükseltme sonrasındaki ilk koşu bu yüzden her kaydı bir kez daha yeniden yazar ve parmak izini o kayda işler; sonraki koşulardan itibaren değişmeyen kayıtlar atlanmaya başlar.
Damga tazeleme adımı başarısız olursa koşu Uyarı ile kapanır ve uzlaştırma adımı atlanır — aksi halde tazelenememiş kayıtlar kaynakta artık yokmuş gibi yorumlanıp yanlışlıkla devre dışı bırakılabilirdi.
Deaktivasyon Eşiği ve Uzlaştırma Onayı
Uzlaştırma adımı, kaynakta artık görünmeyen kimlik bilgilerini Deaktivasyon Modu ayarına göre pasifleştirir veya siler. Kaynak tarafındaki tek bir yanlış yapılandırma (yanlış base DN, daraltılmı ş bir arama filtresi, boşalmış bir grup) bu adımı, binlerce tüketicinin erişimini tek koşuda kesen bir işleme dönüştürebilir.
Bu yüzden uzlaştırma, başlamadan önce iki sayım yapar: bu koşuda kaç kayda dokunulacak ve kaynak toplam kaç senkron-yönetimli kayda sahip. Oran deaktivasyon eşiğini aşarsa uzlaştırma hiç çalışmaz — tek bir kayıt bile yazılmaz — ve koşu Uzlaştırma Onayı Bekliyor durumunda kapanır.
Eşik değerleri her kimlik sağlayıcının senkronizasyon ayarlarında tanımlanır; varsayılan olarak yüzde eşiği %20'dir ve adet eşiği tanımsızdır (yalnız oran denetlenir). Eşiği sıfır ya da negatif yapmak o denetimi kapatır; ikisi birden kapatıldığında hiç ölçüm yapılmaz.
Denetim yalnız yıkıcı yola aittir: Deaktivasyon Modu Pasifleştir ya da Sil iken yapılır, Hiçbiri iken zaten deaktive edilecek bir şey olmadığı için atlanır. Ayrıca bir politika değil emniyet ağıdır: eşiğin altında kalan bir filtre daraltmasında hiç tetiklenmez ve o kayıtların kaderini kapsam çıkışı politikası belirler.
Onay bekleyen bir koşuda:
- Kaynak kilitlenmez. Koşu kapandığı için kaynak yeniden senkronize edilebilir; zamanlanmış koşular da çalışmaya devam eder. Beklerken oluşan yeni bir eşik aşımı, bekleyen onayı güncel ölçümle tazeler — her kaynak için aynı anda yalnız bir onay bekler ve o onay her zaman en son koşunun sayılarını taşır. Onay işlemi bu durumda yeni satıra geçer: eski satırdan onaylamak reddedilir, çünkü o ekrandaki sayılar artık uygulanacak sayılar değildir.
- Kaynağın son senkronizasyon sonucu Uyarı olarak görünür. Bu doğrudur: koşu hatasız bitmiştir ve hiçbir şey deaktive edilmemiştir. Onay bekleyişi koşu satırında yaşar, kaynağın özet bilgisinde değil.
- Onay 24 saat geçerlidir. Süresi dolan bir onay uygulanamaz; kaynağın bir sonraki koşusu güncel ölçümle yenisini üretir.
Yönetici Senkronizasyon Geçmişi tablosundaki satırdan uzlaştırmayı onayladığında, aynı satır devam etmez: yalnızca uzlaştırmayı uygulayan yeni bir koşu başlar. Bu koşu kaynaktan hiçbir şey çekmez ve onaylanan ölçümün tam olarak aynısını uygular.
Uygulama koşusu, ilk kayda dokunmadan hemen önce onayı yeniden doğrular: aday listesi, senkronizasyon filtresi ve deaktivasyon modu onay anındakiyle birebir aynı olmalıdır. Aradan geçen sürede filtre düzenlendiyse, mod pasifleştirmeden silmeye çevrildiyse ya da normal bir koşu adayların bir kısmını yeniden damgaladıysa uygulama reddedilir, koşu Başarısız olur ve hiçbir kayıt değiştirilmez.
Bu durumda yapılacak iş senkronizasyonu yeniden koşturup çıkan yeni sonucu onaylamaktır. Sistem sessizce yeniden hesaplayıp uygulamaz — onaylanan sayı ile uygulanan işin farklı olması, bu mekanizmanın engellemek için var olduğu şeydir.
Onaylayan kullanıcı kaydedilir; onay tek kullanımlıktır ve uygulandıktan sonra tekrar kullanılamaz. Ayrı bir yetki tanımı gerekmez — ilgili kimlik sağlayıcıyı yönetebilen kullanıcı onaylayabilir.
Çalışan Koşunun Canlı Takibi
Senkronizasyon Geçmişi tablosunda Kuyrukta ya da Çalışıyor durumunda bir satır görünürken tablo kendini yaklaşık beş saniyede bir sessizce günceller: sayfa başa dönmez, açılmış bir hata listesi kapanmaz, yükleniyor göstergesi titremez. Koşu sonuçlandığında güncelleme kendiliğinden durur — ekranda çalışan bir koşu yokken tablo hiç istek üretmez.
Bu davranış tablonun kendisine aittir; dolayısıyla tablonun göründüğü beş ekranın hepsinde aynı çalışır: Kimlik > Sağlayıcılar > Senkronizasyon ekranı ve dört sağlayıcının (LDAP, Veritabanı, API, OIDC) görüntüleme ekranı.
Koşunun durumu (Kuyrukta → Çalışıyor → sonuç) anında yansır; ancak koşunun o ana kadar işlediği kayıt sayısı ve aşama bilgisi motor tarafından yaklaşık on beş saniyede bir yazılır. Bu yüzden tablo beş saniyede bir tazelense de bu sayaçlar basamaklı ilerler; aynı sayının birkaç tazeleme boyunca sabit kalması beklenen davranıştır, takılma değildir. Daha sık tazeleme sayaçları hızlandırmaz, yalnızca okuma yükünü artırır.
Canlı takibin iki sınırı vardır:
- Yalnızca görüntülenen sayfada çalışan bir koşu varsa devreye girer. Koşular en yeniden eskiye sıralandığı için çalışan bir koşu tanımı gereği ilk sayfadadır; geçmişin ileri sayfalarında gezinirken tablo tazelenmez.
- Zamanlanmış bir koşu arka planda başladığında tablo bunu kendiliğinden görmez; canlı takip yalnızca ekranda zaten görünen bir koşu satırı için çalışır. Bu yüzden dört sağlayıcının görüntüleme ekranında da Senkronizasyon Geçmişi başlığının yanında bir Yenile düğmesi bulunur — tabloyu bir kez elle tazelemek yeni koşuyu getirir.
Kimlik > Sağlayıcılar > Senkronizasyon ekranında, tablo bir koşunun bittiğini gördüğü anda üstündeki kaynak satırlarının özet sayıları da kendiliğinden tazelenir. Sağlayıcı görüntüleme ekranlarındaki son koşu özeti kutusu bu tazelemeye dahil değildir; onu güncellemek için o ekrandaki Yenile düğmesi kullanılır.
Kaynak Başına Tek Koşu
Bir kimlik kaynağı için aynı anda yalnızca bir koşu çalışabilir. Bir koşu kuyruktayken veya çalışırken aynı kaynak için gelen ikinci tetikleme reddedilir ve ekranda "senkronizasyon zaten çalışıyor" hatası görüntülenir; bu sırada başka kaynakların senkronizasyonu etkilenmez.
Bu kural, Manager'ın birden fazla düğümle (küme olarak) çalıştığı kurulumlarda da geçerlidir: kazananı veritabanı belirler, dolayısıyla iki düğüm aynı anda tetiklense bile kaynak yalnızca bir kez senkronize edilir. Önceki sürümlerde bu kontrol yalnızca isteği alan düğümün kendi belleğine bakıyordu ve başka bir düğümde süren koşuyu göremiyordu.
Koşu Hata Listesi
Bir koşu, kaynaktaki bazı kullanıcıları eleyip diğerleriyle devam edebilir. Eskiden bu elemeler yalnızca Atlanan sayacına yansırdı; artık her eleme, gerekçesiyle birlikte koşunun kendi hata listesine yazılır.
Hata/Uyarı sütunundaki sayıya tıklanarak satır genişletilir ve o koşuya ait ilk 50 kayıt listelenir: önem derecesi, ilgili kullanıcı adı, oluşma zamanı ve gerekçe. Kaydedilen gerekçeler:
| Gerekçe | Ne zaman oluşur |
|---|---|
| Elle oluşturulmuş kimlik bilgisi çakışması | Kullanıcı adına ait, senkronizasyon dışında oluşturulmuş bir kimlik bilgisi var; senkronizasyon onu ezmez. |
| Başka kaynak tarafından yönetiliyor | Kimlik bilgisi başka bir kimlik kaynağına bağlı; farklı bir kaynak onu devralmaz. |
| Proje arası kullanıcı adı çakışması | Aynı kullanıcı adı ba şka bir projede kayıtlı olduğu için yeni kimlik bilgisi oluşturulmaz. |
| Kimlik anahtarı kurulamadı | Kaynaktan gelen kayıtta ne kullanıcı adı ne e-posta bulunuyor. |
| Dış kimlik çakışması | Kullanıcının kararlı dış kimliği zaten başka bir kimlik bilgisine bağlı ya da kaynağın kapsamından çıkmış bir kimliğin yeniden talep edilmesi reddedildi. Kullanıcı o koşuda atlanır: bir yönetici sahipliği çözene kadar hiçbir kimlik bilgisi oluşturulmaz ya da güncellenmez. |
| Kararlı dış kimlik olmadan deaktivasyon | Uzlaştırma, kararlı bir dış kimlik döndürmeyen bir kaynakta kayıt pasifleştirdi veya sildi. Bu satır tek bir kullanıcıyı değil koşunun tamamını anlatan bir uyarıdır: hiçbir kullanıcı elenmemiştir ve koşunun sonucu bundan etkilenmez. |
Bir koşu için en fazla 1000 hata kaydı saklanır. Kaynakta bundan daha fazla eleme olursa Hata/Uyarı sütunundaki sayı gerçek toplamı göstermeye devam eder, ancak liste ilk 1000 kayıtla sınırlanır ve satır genişletildiğinde bunu belirten bir uyarı görüntülenir. Böylece çok büyük dizinlerde tek bir koşu kaydı orantısız büyümez.
Saklama Süresi
Senkronizasyon Geçmişi kayıtları, Uygulama Logu Temizleme Görevleri ekranındaki Kimlik Senkronizasyon Geçmişi satırı ile yönetilir. Bu ayar varsayılan olarak kapalıdır — yönetici açıkça bir süre (saat veya gün cinsinden) girip etkinleştirmedikçe hiçbir koşu kaydı otomatik olarak silinmez. Hem saatlik hem günlük temizleme görevi bu ayarı okur.
Bu ayar artık koşu satırlarıyla birlikte koşu hata listelerini de temizler; hata listesinin ayrı bir saklama ayarı yoktur. Ayar kapalıyken (varsayılan) hiçbiri silinmez, açıkken ikisi de aynı yaşa göre silinir. Bir kimlik kaynağı silindiğinde ise o kaynağa ait koşu kayıtları ve hata listeleri ayarın durumundan bağımsız olarak birlikte silinir.
Denetim Kaydında Kaynak Bilgisi
Senkronizasyonun değiştirdiği kimlik bilgisi (credential) kayıtları Denetim Kayıtları ekranında artık jenerik bir sistem kullanıcısı yerine sync:<KAYNAK TÜRÜ>:<kaynak adı> biçiminde görünür — örneğin sync:LDAP:corp-ad veya sync:OIDC:keycloak-prod. Böylece bir kimlik bilgisinin senkronizasyon yoluyla mı yoksa bir kullanıcı tarafından mı değiştirildiği, hangi kaynaktan geldiği de belli olacak şekilde ayırt edilebilir. Bu değer Denetim Kayıtları ekranının Kullanıcı alanında aranabilir.
Elle tetiklenen bir koşuda, koşuyu başlatan yöneticinin adı bu denetim kaydına yazılmaz — o bilgi yukarıdaki Senkronizasyon Geçmişi tablosunun Tetikleyici sütununda gösterilir.
Kaynak Anahtarı
Her kimlik kaynağına, oluşturulduğu anda adından türetilen kalıcı bir kaynak anahtarı atanır (örneğin Keycloak Prod adlı bir sağlayıcı için keycloak-prod). Anahtar yalnızca küçük harf, rakam ve tire içerir; aynı proje ve aynı kaynak türü içinde tekildir.
- Anahtar değişmezdir: kaynağı yeniden adlandırmak anahtarı değiştirmez, böylece kaynağa dışarıdan yapılan atıflar ad değişikliğinden etkilenmez.
- Ekrandan düzenlenemez; sistem tarafından üretilir. Aynı projede aynı ada sahip ikinci bir kaynak oluşturulursa anahtar sonuna bir sayı eklenir.
- Tekillik kaynak türü içindedir: aynı projedeki bir LDAP kaynağı ile bir OIDC kaynağı aynı anahtarı taşıyabilir, bu bir çakışma değildir.
- İçe aktarmada paketteki anahtar kullanılmaz: mevcut bir kaydın üzerine yazılıyorsa hedefteki anahtar korunur, yeni kayıt olarak aktarılıyorsa anahtar kaydın son adından yeniden üretilir.
Senkronla Gelen Tüketicilerin Anahtarı
LDAP, Keycloak, Veritabanı veya API senkronizasyonundan doğan her tüketici, artık elle oluşturulan bir tüketici gibi kalıcı bir tüketici anahtarı alır ve kaydına ilk senkron zamanı damgası işlenir; envanter ve taşıma ekranları ile dışa aktarma bu kayıtları artık anahtarsız bir kayıt olarak görmez.
Bu sürümden önce var olan anahtarsız kayıtlara anahtar, sürüm yükseltmesi sırasında çalışan açılış taşımasıyla zaten atanmıştı; bu değişiklik yalnızca bundan sonra senkronizasyonla yeni oluşan tüketicileri kapsar.
Senkronizasyonu Dışarıdan Tetikleme
Ekrandaki Senkronize Et düğmesinin yanında, senkronizasyon bir yönetim isteği ile de tetiklenebilir. İki uç noktanın davranışı aynıdır (ikisi de aynı koşuyu kuyruğa alır), yalnızca yanıtları farklıdır:
| İstek | Yanıt |
|---|---|
POST /api/authentication-ldap/{id}/sync-runsPOST /api/authentications-database/{id}/sync-runsPOST /api/authentication-apis/{id}/sync-runsPOST /api/authentication-oidc-providers/{id}/sync-runs | 202 — koşu kuyruğa alındı. Yanıt gövdesi koşu kimliğini, kaynak bilgisini, durumu ve kuyruğa alınma zamanını taşır; Location başlığı koşu kaydını adresler. Kaynak meşgulse 409 döner. |
POST .../sync-now (mevcut uç) | 200 — yanıt biçimi ve alanları değişmemiştir; yalnızca isteğe bağlı bir koşu kimliği alanı eklenmiştir. Kaynak meşgulse eskisi gibi 400 döner. |
Koşunun ilerleyişi GET /api/identity-sync-run-histories/{runId} ile, o koşuda elenen kullanıcılar ise GET /api/identity-sync-run-histories/{runId}/issues ile okunur. Her iki uç da kimlik yönetimi görüntüleme yetkisi ister.
Ekrandaki Senkronize Et düğmesinin davranışı bu değişiklikle aynı kalmıştır — düğme mevcut ucu kullanmaya devam eder. Yeni uç, kendi otomasyonunu yazan kurumlar içindir: koşu kimliğini doğrudan döndürdüğü için koşunun sonucu daha sonra sorgulanabilir.
sync-runs uçları, koşu kapsamını taşıyan isteğe bağlı bir mode sorgu parametresi kabul eder: FULL (parametre verilmediğinde varsayılan), USERS_ONLY ya da GROUPS_ONLY. Kaynağın desteklemediği bir kapsam 400 runModeNotSupported ile reddedilir; istek sessizce tam koşuya düşürülmez — çünkü çağıranın istemediği işi, istediği işin adıyla yapmak reddetmekten daha kötüdür. RECONCILE_APPLY bu uçta kabul edilmez: o kapsamdaki bir koşu yalnız bir onaydan doğar.
Legacy sync-now ucu mode parametresi almaz ve sözleşmesi değişmemiştir.
Bekleyen bir uzlaştırma şu istekle onaylanır:
| İstek | Yanıt |
|---|---|
POST /api/identity-sync-run-histories/{runId}/actions/approve-reconcile | 202 — bekleyen onayı uygulayacak bir RECONCILE_APPLY koşusu kuyruğa alındı; yanıt gövdesi yeni koşunun kimliğini taşır. Onayın kendisi bu çağrıda değil, yalnızca o yeni koşunun ilk kayıt yazımından hemen önce tüketilir. Koşu onay beklemiyorsa ya da bekleyen onayın yerini daha yeni bir koşu aldıysa 409 reconcileApprovalConflict, kaynakta bekleyen onay yoksa 400 reconcileApprovalNotFound, onayın süresi dolduysa 400 reconcileApprovalExpired döner. |
İstek, kaynak üzerinde kimlik yönetimi yetkisi ister — senkronizasyonu çalıştırmayı sağlayan yetkinin aynısı; ayrı bir onay yetkisi tanımlanmamıştır.
Kuyrukta ya da Çalışıyor durumundaki bir koşu, aynı yetkiyle şu istekle iptal edilir:
| İstek | Yanıt |
|---|---|
POST /api/identity-sync-run-histories/{runId}/actions/cancel | 200 — koşu geçmişi tablosundaki İptal düğmesiyle aynı davranış, bkz. İptal. Koşu Kuyrukta ya da Çalışıyor değilse çevrilmiş bir mesajla 409 döner. |
Davranış ve Güvenlik Notları
- Elle oluşturulmuş (senkronizasyon dışı) bir kimlik bilgisinin kullanıcı adı kaynakta da mevcutsa, bu kayıt senkronizasyon tarafından üzerine yazılmaz; çakışmanın giderilmesi için yönetici müdahalesi gerekir.
- Bir kimlik bilgisi zaten başka bir kaynak tarafından yönetiliyorsa (örneğin LDAP), farklı bir kaynak (örneğin Veritabanı) bu kaydı devralmaz.
- Aynı kullanıcı adı başka bir projede zaten kayıtlıysa, senkronizasyon bu kullanıcı adıyla başka bir projede yeni bir kimlik bilgisi oluşturmaz.
- Kaynaktan kullanıcı listesi alınamazsa (bağlantı hatası vb.), kaynak hiç kullanıcı döndürmezse ya da liste yalnızca kısmen okunabilirse, olası bir kaynak kesintisinin toplu deaktivasyona yol açmaması için o koşuda deaktivasyon adımı atlanır. Kısmi bir liste, henüz okunmamış kayıtları kaynakta artık yokmuş gibi gösterirdi.
- Senkronizasyon kapsam filtresinin elediği bir kullanıcı kaynaktan silinmiş değil kapsam dışıdır: kimlik bilgisi görülmüş olarak damgalanır ve ona yalnızca kapsam çıkışı politikası dokunabilir. Bu ayrım olmasaydı bir filtreyi daraltmak sessizce deaktivasyona dönüşürdü.
İlk üç kuralın hangi kullanıcıyı hangi gerekçeyle elediği, koşunun hata listesinde kullanıcı adıyla birlikte görüntülenir.
İlgili Sayfalar
Sağlayıcı bağlantı ayarları için Database Provider, LDAP Active Directory, API Kimlik Sağlayıcı ve OIDC Kimlik Sağlayıcı sayfalarını, senkronize edilen kayıtlar için Kimlik Bilgileri sayfasını inceleyebilirsiniz.