> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# LDAP/Active Directory

> LDAP ve Active Directory bağlantılarını yapılandırır ve yönetir. Kurumsal dizinlere SSL/TLS korumalı bağlantı ve havuz yönetimi ile erişim sağlayabilir

## Genel Bakış

<AccordionGroup>
  <Accordion title="Amacı Nedir?">
    <CardGroup cols={2}>
      <Card title="Merkezi Yönetim" icon="database">
        Connection (Bağlantı) tanımlarını merkezi hale getirerek tüm Integration Flow ve Connector adımlarında aynı LDAP erişim bilgilerini tekrar kullanılabilir kılar
      </Card>

      <Card title="SSL/TLS Yönetimi" icon="shield">
        SSL/TLS ve sertifika gereksinimlerini enum tabanlı politika ile yöneterek kimlik doğrulama süreçlerinde tutarlılık sağlar
      </Card>

      <Card title="Sorgu Optimizasyonu" icon="search">
        Search Scope ve customFilter alanlarıyla dizin sorgularını daraltarak gereksiz trafik ve yetkisiz attribute erişimini sınırlandırır
      </Card>

      <Card title="Paylaşım Özelliği" icon="share">
        Environment seçimi ve Move to Global özelliği sayesinde aynı bağlantıyı proje veya yönetim konsolu düzeyinde paylaşmayı mümkün kılar
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Çalışma Prensibi">
    <CardGroup cols={2}>
      <Card title="Bağlantı Başlatma" icon="plug">
        Integration Flow veya Connector içerisinden LDAP bağlantısı talep edildiğinde, sistem yapılandırılmış connection parametrelerini okur
      </Card>

      <Card title="Connection Pool Yönetimi" icon="database">
        Gateway, LDAP oturumlarını pool'da hazır tutar; seçili ortam için uygun oturum yoksa yeni bağlantı açar
      </Card>

      <Card title="Kimlik Doğrulama" icon="shield-alt">
        Username/password veya requireCertificateType alanına göre sertifika doğrulaması yapılarak hedef dizine bind edilir
      </Card>

      <Card title="Veri İletişimi" icon="network-wired">
        LDAP protokolü üzerinden searchScope ve customFilter değerlerine göre arama/sorgu işlemleri yürütülür
      </Card>

      <Card title="Bağlantı Yönetimi" icon="link">
        İşlem tamamlandığında bağlantı pool'a geri döner ve sonraki istekler için bekletilir
      </Card>

      <Card title="Hata Yönetimi" icon="exclamation-triangle">
        Bağlantı hatası, timeout veya authentication hatası durumunda sonuç deployment loglarına yazılır ve kullanıcıya ayrıntılı mesaj gösterilir
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Kullanım Alanları">
    <CardGroup cols={2}>
      <Card title="Kimlik Doğrulama" icon="user-check">
        LDAP temelli kullanıcı kimlik doğrulamasını Integration Flow adımlarında tekil bağlantı üzerinden yönetmek
      </Card>

      <Card title="Kullanıcı Sorgulama" icon="users">
        Self-service portal veya yönetim konsolu kullanıcılarını Active Directory/LDAP dizininden sorgulamak
      </Card>

      <Card title="Yetkilendirme" icon="key">
        Gruplara veya organizational unit (OU) bazlı yetkilendirme kuralları oluşturmak için membership attribute'larını okumak
      </Card>

      <Card title="SSL/TLS Denetimi" icon="shield">
        Sertifika zorunluluğu olan kurum içi dizinlere LDAPS ile bağlanarak SSL/TLS denetimi yapmak
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Teknik Özellikler ve Yetenekler

<AccordionGroup>
  <Accordion title="Temel Özellikler">
    <CardGroup cols={2}>
      <Card title="Sertifika Gereksinimi Politikaları" icon="certificate">
        EnumLdapRequireCertificateType ile NOT\_REQUIRED, REQUIRED\_CN veya REQUIRED\_AN\_PN seçenekleri belirlenir; REQUIRED\_AN\_PN seçildiğinde certificateId alanı zorunlu olur.
      </Card>

      <Card title="Arama Kapsamı ve Filtreleme" icon="search">
        EnumSearchScope (OBJECT, ONE\_LEVEL, SUBTREE) ve customFilter kombinasyonu ile LDAP sorguları hassaslaştırılır.
      </Card>

      <Card title="Environment Değişkeni Desteği" icon="code-branch">
        Server Address, Username, Password ve Base DN alanları için ortam değişkeni seçilerek gizli değerler kullanılabilir.
      </Card>

      <Card title="Ortam Bazlı Yapılandırma" icon="server">
        Her ortam (Development, Test, Production) için ayrı connection parametreleri tanımlama imkanı.
      </Card>

      <Card title="Enable/Disable Kontrolü" icon="toggle-on">
        Connection'ı aktif veya pasif hale getirme (enable/disable toggle). Pasif durumda bağlantı kullanılamaz ancak yapılandırması saklanır.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="İleri Düzey Özellikler">
    <CardGroup cols={2}>
      <Card title="Move to Global Paylaşımı" icon="share">
        Proje içindeki LDAP bağlantısı, Move to Global aksiyonu ile yönetim projesine taşınarak tüm projelerde kullanılabilir.
      </Card>

      <Card title="Revoked Sertifika Ayrımı" icon="shield">
        Sertifika listesi çekilirken revoked flag'i kontrol edilir, iptal edilmiş sertifikalar ayrı uyarı listesine alınır.
      </Card>

      <Card title="Deployment Sonucu İzleme" icon="chart-line">
        Kaydetme veya Test Connection işlemlerinden sonra deploymentResult diyaloğu açılarak bind/log detayları gösterilir.
      </Card>

      <Card title="Connection Test Özelliği" icon="flask">
        "Test Connection" butonu ile bağlantı parametrelerini kaydetmeden önce doğrulama imkanı.
      </Card>

      <Card title="Export/Import Özelliği" icon="file-export">
        Connection yapılandırmasını ZIP dosyası olarak export etme. Farklı ortamlara (Development, Test, Production) import etme. Versiyon kontrolü ve yedekleme imkanı.
      </Card>

      <Card title="Connection Monitoring" icon="chart-bar">
        Bağlantı sağlığı, pool durumu ve performans metriklerini izleme.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Connection Parametreleri

<AccordionGroup>
  <Accordion title="Zorunlu Parametreler">
    <CardGroup cols={2}>
      <Card title="Name" icon="tag">
        **Açıklama:** Connection adı (benzersiz olmalı)\
        **Örnek Değer:** `Production_LDAP`\
        **Notlar:** Boşlukla başlamaz, özel karakterler kullanılmamalı
      </Card>

      <Card title="Server Address" icon="server">
        **Açıklama:** LDAP sunucusunun URI veya host bilgisi\
        **Örnek Değer:** `ldaps://directory.example.com:636`\
        **Notlar:** Ortam değişkeni ile seçilebilir
      </Card>

      <Card title="Require Certificate Type" icon="certificate">
        **Açıklama:** Sertifika doğrulama politikasını belirler\
        **Örnek Değer:** REQUIRED\_CN\
        **Notlar:** REQUIRED\_AN\_PN seçilirse certificateId zorunlu olur
      </Card>

      <Card title="Search Scope" icon="search">
        **Açıklama:** Sorgu derinliği (EnumSearchScope)\
        **Örnek Değer:** SUBTREE\
        **Notlar:** OBJECT, ONE\_LEVEL veya SUBTREE değerlerinden biri seçilir
      </Card>

      <Card title="Base DN" icon="sitemap">
        **Açıklama:** Aramaların başlayacağı distinguished name\
        **Örnek Değer:** `ou=Users,dc=corp,dc=local`\
        **Notlar:** Ortam değişkeni kullanılabilir; doğrulama için boş bırakılamaz
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="İsteğe Bağlı Parametreler">
    <CardGroup cols={2}>
      <Card title="Use SSL" icon="shield">
        **Açıklama:** LDAPS iletişimi için SSL/TLS kanalını açar\
        **Varsayılan Değer:** false\
        **Önerilen Değer:** true (Production ortamında)
      </Card>

      <Card title="Username" icon="user">
        **Açıklama:** Bind işlemi için kullanılacak servis hesabı\
        **Varsayılan Değer:** (Boş)\
        **Önerilen Değer:** svc\_ldap\_reader veya environment değişkeni
      </Card>

      <Card title="Password" icon="lock">
        **Açıklama:** Bind hesabının şifresi veya secret referansı\
        **Varsayılan Değer:** (Boş)\
        **Önerilen Değer:** Öneri: Secret Manager değişkeni
      </Card>

      <Card title="Custom Filter" icon="filter">
        **Açıklama:** Ek LDAP filtre ifadesi\
        **Varsayılan Değer:** (Boş)\
        **Önerilen Değer:** LDAP filter expression
      </Card>

      <Card title="Certificate Id" icon="certificate">
        **Açıklama:** Secret Manager'daki sertifikanın kimliği\
        **Varsayılan Değer:** (Boş)\
        **Önerilen Değer:** UUID (REQUIRED\_AN\_PN seçildiğinde zorunlu)
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

### Timeout ve Connection Pool Parametreleri

<CardGroup cols={2}>
  <Card title="Connection Timeout" icon="clock">
    **Açıklama:** LDAP sunucusuna bağlanmak için maksimum süre\
    **Varsayılan:** 10000\
    **Min:** 2000 | **Max:** 60000\
    **Birim:** milisaniye
  </Card>

  <Card title="Request Timeout" icon="hourglass">
    **Açıklama:** Search/bind yanıtı için bekleme süresi\
    **Varsayılan:** 30000\
    **Min:** 5000 | **Max:** 120000\
    **Birim:** milisaniye
  </Card>

  <Card title="Pool Size" icon="layer-group">
    **Açıklama:** Aynı anda açık tutulacak maksimum bağlantı\
    **Varsayılan:** 20\
    **Min:** 1 | **Max:** 50\
    **Birim:** adet
  </Card>

  <Card title="Bind Retry Interval" icon="repeat">
    **Açıklama:** Başarısız bind denemeleri arasındaki bekleme\
    **Varsayılan:** 2000\
    **Min:** 500 | **Max:** 10000\
    **Birim:** milisaniye
  </Card>
</CardGroup>

## Kullanım Senaryoları

<CardGroup cols={2}>
  <Card title="Tekil Kimlik Doğrulama" icon="user-check">
    **Durum:** Portal kullanıcıları LDAP üzerinden oturum açıyor\
    **Çözüm:** Server Address=ldaps\://auth.corp:636, Use SSL=true, Require Certificate Type=REQUIRED\_CN\
    **Beklenen Davranış:** Kullanıcılar TLS korumalı bind ile doğrulanır
  </Card>

  <Card title="Grup Bazlı Yetki Kontrolü" icon="users">
    **Durum:** Integration Flow, belirli gruplara ait kullanıcıları çekmeli\
    **Çözüm:** Custom Filter ile grup filtresi\
    **Beklenen Davranış:** Flow sadece ilgili üyeleri listeler
  </Card>

  <Card title="Yönetim Konsolu Entegrasyonu" icon="cog">
    **Durum:** Admin sayfası global LDAP tanımını paylaşmalı\
    **Çözüm:** Move to Global çalıştırılır, selectedEnvironmentId=manager\
    **Beklenen Davranış:** Yönetim konsolu aynı bağlantıyı kullanır
  </Card>

  <Card title="Service Account Rotation" icon="key">
    **Durum:** Şifreler Secret Manager'da saklanıyor\
    **Çözüm:** Username ve Password environment değişkeni\
    **Beklenen Davranış:** Şifre değiştiğinde connection güncellemesine gerek kalmaz
  </Card>

  <Card title="Sertifika Zorunlu Ortam" icon="certificate">
    **Durum:** Kurum içi PKI ile mutual TLS isteniyor\
    **Çözüm:** Require Certificate Type=REQUIRED\_AN\_PN, Certificate Id=UUID\
    **Beklenen Davranış:** Sertifika doğrulaması olmadan bind reddedilir
  </Card>

  <Card title="Yüksek Trafikli Sorgular" icon="chart-line">
    **Durum:** Dakikada yüzlerce search çağrısı var\
    **Çözüm:** Pool Size=30, Connection Timeout=5000\
    **Beklenen Davranış:** Pool sayesinde bağlantılar yeniden kullanılır
  </Card>
</CardGroup>

## Connection Yapılandırma

### Yeni LDAP Havuz Bağlantısı Oluşturma

<img src="https://mintcdn.com/apinizer/YX1NcEKlSBeHefxE/images/yonetici/baglantilar/ldap-variable-new.png?fit=max&auto=format&n=YX1NcEKlSBeHefxE&q=85&s=796c6bf57d4e1b9ad38aec6c94448173" alt="Image 2024 9 9 15 35 35 Pn" width="1000" className="mr-auto" data-path="images/yonetici/baglantilar/ldap-variable-new.png" />

#### Yapılandırma Adımları

<Steps>
  <Step title="Oluşturma Sayfasına Gitme">
    * Sol menüden **Connection → LDAP Havuz Bağlantısı** bölümüne gidin.
    * Sağ üstteki **\[+ Create]** butonuna tıklayın.
    * Yeni LDAP Havuz Bağlantısı oluşturma formu açılır.
  </Step>

  <Step title="Temel Bilgileri Girme">
    **Enable Status (Aktif Durumu) Ayarlama:**

    * Formun üst kısmında **Enable Status** toggle'ını bulun.
    * Toggle'ı **Aktif** konumuna getirin (varsayılan olarak aktif gelir).
    * Connection'ı pasif yapmak isterseniz toggle'ı **Pasif** konumuna getirin.
    * Pasif connection'lar Integration Flow'larda kullanılamaz ancak yapılandırmaları saklanır.

    **Name (İsim) - Zorunlu Alan:**

    * **Name** alanına benzersiz bir connection adı girin.
    * İsim örnekleri: `Production_LDAP`, `Test_LDAPConnection`, `Dev_LDAP_Auth`
    * İsim kuralları:
    * Boşlukla başlamamalı
    * Özel karakterler kullanılmamalı (önerilen: harf, rakam, alt çizgi)
    * Maksimum 255 karakter
    * İsim yazdıkça sistem otomatik kontrol eder:
    * Yeşil tik işareti: İsim kullanılabilir
    * Kırmızı çarpı işareti: İsim zaten mevcut, farklı bir isim seçin

    **Description (Açıklama) - İsteğe Bağlı:**

    * **Description** alanına connection'ın amacını açıklayan bir metin girin.
    * Örnek açıklamalar:
    * "Portal LDAP erişimi"
    * "Production ortamı Active Directory bağlantısı"
    * "Test ortamı için dummy LDAP bağlantısı"
    * Maksimum 1000 karakter sınırı vardır.
    * Bu alan boş bırakılabilir.

    <Info>
      Sayfanın üst kısmındaki işlem butonları alanında, **\[\<> Variable]** butonunu kullanarak dinamik değer seçebilir, Global variable ifadeleri sayesinde connection parametrelerini sabit değer yerine değişken tabanlı yönetebilirsiniz. Detaylı bilgi için [Dinamik Değişkenler](/tr/concepts/temel-kavramlar/dinamik-degiskenler) sayfasını inceleyebilirsiniz.
    </Info>
  </Step>

  <Step title="Environment (Ortam) Seçimi">
    * **Environment** dropdown menüsünü bulun.
    * Dropdown menüyü açın ve aşağıdaki seçeneklerden birini seçin:
    * **Development**: Geliştirme ortamı için
    * **Test**: Test ortamı için
    * **Production**: Üretim ortamı için
    * Her ortam için farklı connection parametreleri tanımlanabilir.
    * Ortam seçimi, connection'ın hangi ortamda aktif olacağını belirler.
    * Test Connection butonu ortam seçilene kadar devre dışı kalır.
  </Step>

  <Step title="LDAP Spesifik Parametreler - Bölüm 1">
    **Server Address - Zorunlu:**

    * **Server Address** alanına LDAP sunucusunun adresini girin.
    * Format: `ldaps://directory.example.com:636` veya `ldap://directory.example.com:389`
    * Ortam değişkeni seçebilirsiniz
    * LDAPS için port 636, LDAP için port 389 kullanılır.

    **Search Scope - Zorunlu:**

    * **Search Scope** dropdown menüsünden seçim yapın:
    * **OBJECT**: Sadece tek entry'i arar
    * **ONE\_LEVEL**: Belirtilen OU'nun ilk seviyesini arar
    * **SUBTREE**: Tüm alt ağaçtaki entry'leri arar
    * Performans gereksinimine göre seçim yapın.

    **Base DN - Zorunlu:**

    * **Base DN** alanına aramaların başlayacağı distinguished name'i girin.
    * Örnek: `ou=Users,dc=corp,dc=local`
    * Ortam değişkeni kullanılabilir
    * Doğrulama için boş bırakılamaz.

    **Custom Filter - İsteğe Bağlı:**

    * **Custom Filter** alanına ek LDAP filtre ifadesi girin.
    * Örnek LDAP filter expression
    * Bu alan boş bırakılabilir.
  </Step>

  <Step title="LDAP Spesifik Parametreler - Bölüm 2">
    **Require Certificate Type - Zorunlu:**

    * **Require Certificate Type** dropdown menüsünden seçim yapın:
    * **NOT\_REQUIRED**: Sertifika doğrulaması gerekmez
    * **REQUIRED\_CN**: Common Name doğrulaması gerekir
    * **REQUIRED\_AN\_PN**: Alternative Name veya Principal Name doğrulaması gerekir
    * REQUIRED\_AN\_PN seçildiğinde Certificate Id zorunlu olur.

    **Certificate Id - REQUIRED\_AN\_PN seçildiğinde zorunlu:**

    * **Require Certificate Type** REQUIRED\_AN\_PN seçildiğinde **Certificate Id** alanı görünür hale gelir.
    * Secret Manager'daki sertifikayı seçin.
    * UUID formatında sertifika kimliği girilir.

    **Use SSL - İsteğe Bağlı:**

    * **Use SSL** checkbox'ını bulun.
    * LDAPS iletişimi için checkbox'ı işaretleyin.
    * Production ortamında true olarak ayarlanmalıdır.

    **Username - İsteğe Bağlı:**

    * **Username** alanına bind işlemi için kullanılacak servis hesabını girin.
    * Örnek: `svc_ldap_reader`
    * Ortam değişkeni seçebilirsiniz
    * Bu alan boş bırakılabilir (anonim bind).

    **Password - Username doluysa zorunlu:**

    * **Username** doldurulduysa **Password** alanı görünür hale gelir.
    * Bind hesabının şifresini girin.
    * Secret Manager değişkeni kullanılması önerilir
    * Şifre güvenlik nedeniyle maskelenmiş görünecektir.
  </Step>

  <Step title="Timeout ve Connection Pool Ayarları">
    **Connection Timeout:**

    * **Connection Timeout** alanına LDAP sunucusuna bağlanmak için maksimum süreyi girin.
    * Varsayılan: 10000 milisaniye (10 saniye)
    * Minimum: 2000, Maksimum: 60000 milisaniye

    **Request Timeout:**

    * **Request Timeout** alanına search/bind yanıtı için bekleme süresini girin.
    * Varsayılan: 30000 milisaniye (30 saniye)
    * Minimum: 5000, Maksimum: 120000 milisaniye

    **Pool Size:**

    * **Pool Size** alanına aynı anda açık tutulacak maksimum bağlantı sayısını girin.
    * Varsayılan: 20
    * Minimum: 1, Maksimum: 50
    * Trafik artarsa Pool Size değerini artırın.
    * Uyarı: Gereğinden yüksek değerler hedef LDAP sunucusunu zorlayabilir.

    **Bind Retry Interval:**

    * **Bind Retry Interval** alanına başarısız bind denemeleri arasındaki bekleme süresini girin.
    * Varsayılan: 2000 milisaniye
    * Minimum: 500, Maksimum: 10000 milisaniye
  </Step>

  <Step title="Güvenlik ve Authentication Ayarları">
    **Username/Password Güvenliği:**

    * Username/password alanlarını secret manager değişkenlerine bağlayın.
    * Bu sayede şifre değiştiğinde connection güncellemesine gerek kalmaz.

    **SSL/TLS Ayarları:**

    * SSL/TLS alanını Production ortamında zorunlu tutun.
    * Use SSL checkbox'ını işaretleyin.
    * LDAPS için port 636 kullanın.

    **Sertifika Yönetimi:**

    * Sertifika yenilemelerinde connection'ı güncelleyin.
    * Certificate Id'yi yeni sertifika ile güncelleyin.
    * Test Connection çalıştırarak doğrulayın.
  </Step>

  <Step title="Test Connection (Bağlantı Testi)">
    * Formun alt kısmında veya sağ üst köşede **\[Test Connection]** butonunu bulun.
    * Ortam seçilene kadar buton devre dışı kalır.
    * Butona tıklayın.
    * Sistem bağlantı parametrelerini test eder:
    * LDAP sunucusuna bağlantı kurulur
    * Kimlik doğrulama yapılır (Username/Password doluysa)
    * Sertifika doğrulaması yapılır (Require Certificate Type aktifse)
    * Bind işlemi test edilir
    * Test sonucu:
    * **Başarılı**: Yeşil onay mesajı görüntülenir, "Connection test successful" gibi bir mesaj
    * **Başarısız**: Kırmızı hata mesajı görüntülenir, hata detayları gösterilir
    * Ortam değişkeni kullanılan kritik alanlar için test sırasında overlay gösterildiğini unutmayın.
    * Hata durumunda:
    * Hata mesajını okuyun
    * İlgili parametreleri kontrol edin (Server Address, Base DN, Username, Password)
    * Firewall ve network ayarlarını kontrol edin
    * LDAP sunucu sağlığını kontrol edin
    * Test başarılı olana kadar parametreleri düzeltin ve tekrar test edin.
  </Step>

  <Step title="Kaydetme ve Deploy Etme">
    * Tüm zorunlu alanların doldurulduğundan emin olun.
    * Test connection'ın başarılı olduğunu doğrulayın (önerilir).
    * Formun sağ üst köşesinde bulunan **\[Save and Deploy]** butonuna tıklayın.
    * Sistem connection'ı kaydeder ve seçilen ortama deploy eder.
    * Başarılı kayıt sonrası:
    * Connection listesi sayfasına yönlendirilirsiniz
    * Yeni connection listede görünür
    * Connection **Enabled** durumda olur
    * Integration Flow ve Connector adımlarında kullanılabilir hale gelir

    **Kontrol Listesi (Kaydetmeden Önce):**

    * Name alanı benzersiz ve geçerli
    * Server Address doldurulmuş
    * Search Scope seçilmiş
    * Base DN doldurulmuş
    * Require Certificate Type seçilmiş
    * REQUIRED\_AN\_PN seçildiyse Certificate Id doldurulmuş
    * Environment seçilmiş
    * Test Connection başarılı (önerilir)
    * Zorunlu alanların hepsi doldurulmuş

    **Sonuç:**

    * Connection başarıyla oluşturulur ve kaydedilir
    * Seçilen ortamda aktif hale gelir
    * Integration Flow ve Connector adımlarında connection seçimi yapılabilir
    * Connection listesinde görüntülenir ve yönetilebilir

    <Check>
      Connection başarıyla oluşturuldu! Artık Integration Flow ve Connector adımlarında kullanabilirsiniz.
    </Check>
  </Step>
</Steps>

### Connection'ı Silme

Connection'ı silmek için:

<CardGroup cols={2}>
  <Card title="Yöntem 1: Liste Ekranından" icon="list">
    * Connection listesinde satır sonundaki **⋮** menüsünden **Delete** seçeneğini tıklayın.
    * Onay dialogunda silme işlemini onaylayın.
  </Card>

  <Card title="Silme İpuçları" icon="info-circle">
    **Silmeden Önce Kontrol Edin:**

    * Integration Flow veya Connector adımlarında kullanılıyor olabilir.
    * Gerekirse alternatif bir connection atayın.
    * Silmeden önce Export ile yedek alın.
  </Card>
</CardGroup>

### Connection'ı Dışa/İçe Aktarma

<Info>
  Bu adımda kullanıcı, mevcut connection'ları yedekleme, farklı ortamlara taşıma veya paylaşma amacıyla dışa aktarabilir (export) ya da daha önce dışa aktarılmış bir connection'ı tekrar içe aktarabilir (import). Bu işlem, sürüm yönetimi, test ve üretim ortamları arasında geçiş veya ekipler arası paylaşım süreçlerinde veri bütünlüğünü korumak için kullanılır.
</Info>

<AccordionGroup>
  <Accordion title="Dışa Aktarma (Export)">
    <CardGroup cols={2}>
      <Card title="Yöntem 1: Liste Ekranından" icon="list">
        * Connection listesinde satır sonundaki **⋮** menüsünden **Export** seçeneğini tıklayın.
        * ZIP dosyası otomatik olarak indirilir.
      </Card>

      <Card title="Dosya Formatı" icon="file-zipper">
        Format: `{Date}-ldap-connection-{ConnectionName}-export.zip`\
        Örnek: `13 Nov 2025-ldap-connection-Production_LDAP-export.zip`
      </Card>

      <Card title="ZIP İçeriği" icon="folder-open">
        * Connection JSON dosyası
        * Metadata bilgileri
        * Bağımlılık bilgileri (örneğin sertifikalar, key store)
      </Card>

      <Card title="Kullanım Alanları" icon="list-check">
        * Yedekleme
        * Ortamlar arası taşıma (Test → Prod)
        * Versiyonlama
        * Ekip veya proje bazlı paylaşım
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="İçe Aktarma (Import)">
    <CardGroup cols={2}>
      <Card title="İçe Aktarma Adımları" icon="upload">
        * Ana listede **\[Import LDAP Havuz Bağlantısı]** butonuna tıklayın.
        * İndirilen ZIP dosyasını seçin.
        * Sistem kontrolleri: Format geçerli mi? İsim çakışması var mı? Bağımlılıklar mevcut mu?
        * Ardından **\[Import]** butonuna tıklayın.
      </Card>

      <Card title="İçe Aktarma Senaryoları" icon="info-circle">
        **Senaryo 1: İsim Çakışması** → Eski connection'ın üzerine yazın veya yeni bir isimle oluşturun.

        **Senaryo 2: Eksik Bağımlılıklar** → Eksik sertifikaları veya key store'ları önce oluşturun veya import sırasında çıkarın.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

### Connection'ın Kullanım Alanları

<CardGroup cols={2}>
  <Card title="Connection Oluşturma ve Aktif Etme" icon="plus-circle">
    **Adımlar:**

    1. Connection'ı oluşturun.
    2. Test Connection ile bağlantıyı doğrulayın.
    3. Save and Deploy ile kaydedin ve etkinleştirin.
    4. Connection'ın Enabled durumda olduğundan emin olun.
  </Card>

  <Card title="Integration / Connector Adımlarında Kullanım" icon="plug">
    LDAP sorgulama ve kimlik doğrulama gerektiren adımlarda connection seçilir. Örnek: "LDAP Lookup", "Attribute Enrichment", "LDAP Authentication" gibi adımlar. Bağlantı seçimi bu adımların yapılandırmasında yer alan Connection alanından yapılır. Aynı connection birden fazla Flow tarafından paylaşılabilir; Uyarı: değişiklik tüm Flow'ları etkiler.
  </Card>

  <Card title="Scheduled Job Kullanımı" icon="clock">
    Zamanlanmış görevlerde (ör. belirli aralıklarla dizin sorguları, kullanıcı senkronizasyonu vb.) bağlantı seçilerek LDAP dizinlerine erişim sağlanır. Connection değiştiğinde, job çalışma davranışı da buna göre güncellenir.
  </Card>

  <Card title="Test Amaçlı Kullanım" icon="flask">
    Connection Test özelliği ile bağlantının doğruluğu Integration Flow'dan bağımsız olarak kontrol edilebilir. Bu test hata ayıklama sürecinde kritik önem taşır.
  </Card>
</CardGroup>

## Best Practices

<AccordionGroup>
  <Accordion title="Yapılması Gerekenler ve En İyi Uygulamalar">
    <CardGroup cols={2}>
      <Card title="Servis Hesabı Yönetimi" icon="user-shield">
        **Kötü:** Domain admin hesabıyla bind etmek.\
        **İyi:** Yalnızca okunur servis hesabı oluşturmak.\
        **En İyi:** OU bazlı sınırlı yetkili servis hesapları tanımlayıp parola rotasyonu planlamak
      </Card>

      <Card title="Sertifika Döngüsü" icon="certificate">
        **Kötü:** Expire olmuş sertifikaları kullanmaya devam etmek.\
        **İyi:** Sertifika bitiş tarihlerini manuel takip etmek.\
        **En İyi:** Secret Manager ve event log ile otomatik uyarı kurmak, REQUIRED\_AN\_PN bağlantılarını önceden yenilemek
      </Card>

      <Card title="Search Scope Seçimi" icon="search">
        **Kötü:** Her sorgu için SUBTREE seçmek.\
        **İyi:** OU bazlı sorgular için ONE\_LEVEL kullanmak.\
        **En İyi:** Kullanım senaryosuna göre scope belirleyip gereksiz attribute okumalarını azaltmak
      </Card>

      <Card title="Environment Değişkeni Kullanımı" icon="code-branch">
        **Kötü:** Sabit kullanıcı adı ve şifreleri forma yazmak.\
        **İyi:** Ortam değişkeni ile gizlemek.\
        **En İyi:** Değişkenleri Secret Manager'dan besleyip erişim loglarını denetlemek
      </Card>

      <Card title="Ortam Yönetimi" icon="server">
        **Kötü:** Tüm ortamlarda aynı connection parametrelerini kullanmak.\
        **İyi:** Her ortam için ayrı connection oluşturmak.\
        **En İyi:** Environment seçeneğini kullanarak tek connection'da tüm ortamları yönetmek, ortamlar arası geçişte sadece environment değiştirmek
      </Card>

      <Card title="Connection Test" icon="flask">
        **Kötü:** Connection'ı test etmeden kaydetmek ve deploy etmek.\
        **İyi:** Kaydetmeden önce Test Connection ile doğrulamak.\
        **En İyi:** Her parametre değişikliğinden sonra test etmek, production'a geçmeden önce test ortamında tam entegrasyon testi yapmak
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Güvenlik En İyi Uygulamaları">
    <CardGroup cols={2}>
      <Card title="LDAPS Zorunluluğu" icon="shield">
        Uyarı: Production ortamında Use SSL kapalı bırakmayın; aksi halde kimlik bilgileri düz metin iletilir
      </Card>

      <Card title="RBAC ve Move to Global" icon="users-cog">
        Connection'ı Move to Global yaptığınızda sadece yetkili kullanıcıların düzenleme yapabildiğinden emin olun, aksi halde tüm projeler etkilenir
      </Card>

      <Card title="Environment Variable İzleme" icon="eye">
        Gizli verileri loglamayın; Test Connection overlay'i kapalı tutarak veri sızıntısını önleyin
      </Card>

      <Card title="Kimlik Bilgileri Yönetimi" icon="lock">
        Kullanıcı adı ve şifre gibi hassas bilgileri environment variable veya secret manager kullanarak saklayın. Kimlik bilgilerini kod veya konfigürasyon dosyalarına hardcode etmeyin. Periyodik olarak şifreleri güncelleyin
      </Card>

      <Card title="SSL/TLS Kullanımı" icon="shield">
        Production ortamında mutlaka SSL/TLS aktif edin. Self-signed sertifikalar sadece development ortamında kullanın. Sertifika expiration tarihlerini takip edin ve zamanında yenileyin
      </Card>

      <Card title="Erişim Kontrolü" icon="user-shield">
        Connection yapılandırmasını sadece yetkili kullanıcıların değiştirmesine izin verin. Connection değişiklik loglarını saklayın. Kritik connection'lar için değişiklik approval süreci uygulayın
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Kaçınılması Gerekenler">
    <CardGroup cols={2}>
      <Card title="Anonim Bind Kullanımı" icon="exclamation-triangle">
        **Neden kaçınılmalı:** Dizin tüm kullanıcılara açılır, erişim izleri tutulmaz.\
        **Alternatif:** Salt okunur servis hesabı ile bind edin
      </Card>

      <Card title="Gereksiz SUBTREE Sorguları" icon="search-minus">
        **Neden kaçınılmalı:** Büyük dizinlerde performans düşer.\
        **Alternatif:** ONE\_LEVEL veya OBJECT scope seçin, customFilter ile daraltın
      </Card>

      <Card title="Sertifika Kontrolünü Devre Dışı Bırakma" icon="shield-slash">
        **Neden kaçınılmalı:** Ortadaki adam saldırılarına açık hale gelir.\
        **Alternatif:** Require Certificate Type alanını kurum politikasına göre REQUIRED\_CN veya REQUIRED\_AN\_PN yapın
      </Card>

      <Card title="Production Connection'ı Test Ortamında Kullanma" icon="triangle-exclamation">
        **Neden kaçınılmalı:** Test verileri production sistemine yazılabilir, gerçek kullanıcılar etkilenebilir, güvenlik riski oluşur.\
        **Alternatif:** Her ortam için ayrı connection oluşturun, environment parametresini kullanın, connection isimlerini ortama göre prefix ekleyerek ayırın (Test\_, Prod\_)
      </Card>

      <Card title="Çok Düşük Timeout Değerleri" icon="clock">
        **Neden kaçınılmalı:** Ağ gecikmelerinde connection sürekli timeout olur, Entegrasyon adımları başarısız olur.\
        **Alternatif:** Gerçek kullanım senaryolarına göre timeout değerlerini ayarlayın, network latency'yi ölçün ve timeout'ları buna göre belirleyin
      </Card>

      <Card title="Connection Pool Kullanmama" icon="layer-group">
        **Neden kaçınılmalı:** Her istekte yeni bağlantı açılır, performans düşer, kaynak tüketimi artar, hedef sistem yükü artar.\
        **Alternatif:** Connection pool aktif edin, pool size'ı trafik hacmine göre ayarlayın, pool monitoring kurun
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Performans İpuçları">
    <CardGroup cols={2}>
      <Card title="Search Scope Optimizasyonu" icon="search">
        **Öneri:** SUBTREE yerine ONE\_LEVEL kullanın, customFilter ile OU'ları daraltın.\
        **Etki:** LDAP sunucusuna gönderilen entry sayısı azalır, yanıt süresi kısalır
      </Card>

      <Card title="Environment Variable Cache" icon="database">
        **Öneri:** Değişkenleri Secret Manager cache'i üzerinden sağlayın.\
        **Etki:** Parametre okuma süresi düşer, Test Connection için overlay daha az görünür
      </Card>

      <Card title="Certificate Rotation Planı" icon="rotate">
        **Öneri:** Sertifika yenilemelerini bakım penceresine denk getirin, yeni certificateId'yi önceden deploy edin.\
        **Etki:** LDAPS kesintisi yaşanmadan güvenlik seviyeniz korunur
      </Card>

      <Card title="Connection Pool Optimizasyonu" icon="layer-group">
        **Öneri:** Pool size'ı peak trafiğe göre ayarlayın (önerilen: eşzamanlı istek sayısı × 1.5), idle connection timeout'ları belirleyin, pool health check yapın.\
        **Etki:** Bağlantı açma maliyeti %80 azalır, yanıt süreleri düşer, kaynak kullanımı optimize edilir
      </Card>

      <Card title="Timeout Değerleri Optimizasyonu" icon="clock">
        **Öneri:** Gerçek network latency'yi ölçün, timeout değerlerini buna göre ayarlayın, çok düşük veya çok yüksek timeout'lardan kaçının.\
        **Etki:** Gereksiz beklemeler önlenir, hızlı fail-over sağlanır, kullanıcı deneyimi iyileşir
      </Card>

      <Card title="Connection Monitoring" icon="chart-bar">
        **Öneri:** Connection pool kullanımını izleyin, timeout oranlarını takip edin, connection health check yapın, alerting kurun.\
        **Etki:** Sorunlar proaktif tespit edilir, performans darboğazları erken belirlenir, kesinti süresi azalır
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Sorun Giderme (Troubleshooting)

<AccordionGroup>
  <Accordion title="LDAP Search Sonuç Döndürmüyor">
    <Warning>
      searchScope çok dar, customFilter yanlış veya Base DN hatalı olabilir.
    </Warning>

    <Steps>
      <Step title="Scope Değeri">
        Scope değerini SUBTREE yaparak tekrar deneyin.
      </Step>

      <Step title="Custom Filter">
        Custom filter'ı kaldırıp test edin.
      </Step>

      <Step title="Base DN Doğrulama">
        Base DN'yi dizin yöneticisiyle doğrulayın.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Certificate Validation Failed">
    <Warning>
      Yanlış requireCertificateType seçildi, sertifika revoked listesinde veya CertificateId güncel değil olabilir.
    </Warning>

    <Steps>
      <Step title="Sertifika Durumu">
        Sertifika durumunu Secret Manager'da kontrol edin.
      </Step>

      <Step title="Sertifika Import">
        Gerekirse yeni sertifikayı import edin.
      </Step>

      <Step title="RequireCertificateType">
        RequireCertificateType değerini kurala uygun güncelleyin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Connection Timeout">
    <Warning>
      Network gecikmesi, hedef sistem yavaş yanıt veriyor veya timeout değeri çok düşük olabilir.
    </Warning>

    <Steps>
      <Step title="Network Kontrolü">
        Network connectivity kontrol edin.
      </Step>

      <Step title="Sistem Sağlığı">
        Hedef sistem sağlığını kontrol edin.
      </Step>

      <Step title="Timeout Ayarları">
        Timeout değerlerini artırın.
      </Step>

      <Step title="Log İnceleme">
        Connection loglarını inceleyin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Authentication Failed">
    <Warning>
      Yanlış kullanıcı adı/şifre, expired credentials veya yetki problemi olabilir.
    </Warning>

    <Steps>
      <Step title="Kimlik Bilgileri">
        Kimlik bilgilerini doğrulayın.
      </Step>

      <Step title="Kullanıcı Durumu">
        Hedef sistemde kullanıcının aktif olduğunu kontrol edin.
      </Step>

      <Step title="Yetki Kontrolü">
        Gerekli yetkilerin verildiğini kontrol edin.
      </Step>

      <Step title="Sertifika Kontrolü">
        SSL/TLS sertifikalarını kontrol edin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Pool Exhausted">
    <Warning>
      Pool size çok düşük, connection leak var veya trafik çok yüksek olabilir.
    </Warning>

    <Steps>
      <Step title="Pool Size">
        Pool size'ı artırın.
      </Step>

      <Step title="Connection Kontrolü">
        Connection'ların düzgün kapatıldığını kontrol edin.
      </Step>

      <Step title="Idle Timeout">
        Idle connection timeout'ları ayarlayın.
      </Step>

      <Step title="Metrik İzleme">
        Connection kullanım metriklerini izleyin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Connection Test Başarılı Ama Entegrasyon Akışı Hata Veriyor">
    <Warning>
      Integration/Connector adımında farklı connection seçili olabilir, adım yanlış yapılandırılmış olabilir veya Flow/Job redeploy edilmemiş olabilir.
    </Warning>

    <Steps>
      <Step title="Enable Toggle">
        Connection'ın enable toggle'ının aktif olduğunu kontrol edin.
      </Step>

      <Step title="Connection Seçimi">
        Integration Flow'da doğru connection'ın seçildiğini doğrulayın.
      </Step>

      <Step title="Connection Deploy">
        Connection'ı tekrar deploy edin.
      </Step>

      <Step title="Flow/Job Deploy">
        Integration Flow veya Job'ı redeploy edin.
      </Step>

      <Step title="Log Kontrolü">
        Gateway loglarını kontrol edin.
      </Step>
    </Steps>
  </Accordion>
</AccordionGroup>

## Sık Sorulan Sorular (SSS)

<AccordionGroup>
  <Accordion title="LDAP bağlantısında birden fazla Base DN tanımlayabilir miyim?">
    <Info>
      Tek connection yalnızca bir Base DN alır; farklı OU'lar için ayrı connection oluşturmanız veya Flow içinde alternatif adımlar tanımlamanız gerekir.
    </Info>
  </Accordion>

  <Accordion title="Test Connection ortam değişkeni kullandığımda neden pasif oluyor?">
    <Info>
      Server Address, Username, Password veya Base DN değişken ile başlıyorsa değerler deployment anında çözülür; Test Connection gerçek değeri göremediği için overlay devreye girer.
    </Info>
  </Accordion>

  <Accordion title="EnumSearchScope değerleri ne işe yarar?">
    <Info>
      OBJECT sadece tek entry'i, ONE\_LEVEL belirtilen OU'nun ilk seviyesini, SUBTREE ise tüm alt ağaçtaki entry'leri arar; performans gereksinimine göre seçim yapılır.
    </Info>
  </Accordion>

  <Accordion title="Sertifika revoked listesinde görünürse ne yapmalıyım?">
    <Warning>
      Secret Manager üzerinden sertifikayı yenileyin veya farklı certificateId seçin; requireCertificateType ayarı gereği revoked sertifikalarla bind engellenir.
    </Warning>
  </Accordion>

  <Accordion title="Environment seçimini değiştirdiğimde parametreler nasıl etkilenir?">
    <Info>
      Her ortam için ayrı değer saklanır; ortamı değiştirdiğinizde form ilgili değerlerle güncellenir ve Save and Deploy sonrasında sadece seçili ortam etkilenir.
    </Info>
  </Accordion>

  <Accordion title="Aynı connection'ı birden fazla Integration Flow'da kullanabilir miyim?">
    <Check>
      Evet, aynı connection birden fazla Integration Flow veya Connector adımında kullanılabilir. Bu merkezi yönetim sağlar ve konfigürasyon tutarlılığını garanti eder. Ancak connection'da yapılan değişiklikler tüm kullanım yerlerini etkileyeceği için dikkatli olunmalıdır.
    </Check>
  </Accordion>

  <Accordion title="Connection pool kullanmak zorunlu mudur?">
    <Info>
      Connection pool kullanımı zorunlu değildir ancak yüksek trafikli sistemlerde şiddetle önerilir. Her istekte yeni bağlantı açmak yerine mevcut bağlantıları yeniden kullanmak performansı önemli ölçüde artırır.
    </Info>
  </Accordion>

  <Accordion title="Test ve Production için farklı connection'lar mı oluşturmalıyım?">
    <Check>
      Evet, her ortam için ayrı connection oluşturmanız önerilir. Alternatif olarak environment parametresini kullanarak tek connection içinde tüm ortamları yönetebilirsiniz. Bu yaklaşım daha kolay yönetim ve daha az hata riski sağlar.
    </Check>
  </Accordion>

  <Accordion title="Test Connection başarılı ama Integration Flow'da çalışmıyor, neden?">
    <Warning>
      Birkaç neden olabilir:
    </Warning>

    1. Connection enable toggle'ı pasif olabilir
    2. Integration adımında farklı bir connection seçili olabilir
    3. Connection deploy edilmemiş olabilir
    4. Integration Flow henüz redeploy edilmemiş olabilir
  </Accordion>
</AccordionGroup>
