> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# LDAP Kimlik Doğrulaması

<Info>
  Bu özellik [yu-i-i/overleaf-cep](https://github.com/yu-i-i/overleaf-cep) tarafından geliştirilmiştir. Burada yapılandırmanız için bazı belgeler sunuyoruz.
</Info>

<Warning>
  Overleaf, görece eski olan **passport-ldapauth** kütüphanesini kullanır; bu nedenle LDAP uyumluluğu tam olarak garanti edilemez. Bazı LDAP kimlik sağlayıcılarında (örneğin [https://goauthentik.io/](https://goauthentik.io/)) oturum açma hataları oluşabilir. Bu nedenle, mümkünse öncelikle OAuth/SAML yönteminin kullanılması önerilir. goauthentik için aşağıdaki test edilmiş [Adım adım: goauthentik](/tr/on-premises/configuration/overleaf-toolkit/authentication/ldap-authentication#adım-adım-goauthentik) bölümünü izleyin.
</Warning>

### LDAP nedir

LDAP, harici kimlik doğrulaması için kullanılan bir kimlik doğrulama protokolüdür. Overleaf Server Pro, web arayüzünde standart kimlik doğrulama yönteminden ayrı, özel bir LDAP oturum açma formu sunar. Bir kullanıcı LDAP kullanıcı adını ve parolasını gönderdiğinde, Overleaf arka ucu kimlik bilgilerini yapılandırılmış LDAP sunucusuna (örneğin `ldap://ldap:10389`) karşı doğrular.

<Frame caption="LDAP için bir Server Pro örneği">
  <img src="https://mintcdn.com/ayakaleaf-pro/x9kfDjtWlyyhG_mR/images/on-premises/image-29.png?fit=max&auto=format&n=x9kfDjtWlyyhG_mR&q=85&s=f3ebcacecec45115cf9b1fa55eb1ba94" alt="" width="2804" height="2005" data-path="images/on-premises/image-29.png" />
</Frame>

### Yapılandırma

Overleaf LDAP, dahili olarak [passport-ldapauth](https://github.com/vesse/passport-ldapauth) kütüphanesini kullanır. Bu yapılandırma seçeneklerinin çoğu, `passport-ldapauth`'u yapılandırmak için kullanılan `server` yapılandırma nesnesine aktarılır. LDAP'ı yapılandırırken sorun yaşıyorsanız, beklenen yapılandırma hakkında fikir edinmek için `passport-ldapauth` README dosyasını okumanızda fayda vardır.

LDAP kimlik doğrulama modülünü etkinleştirmek için `EXTERNAL_AUTH` ortam değişkeni gereklidir. Bu ortam değişkeni hangi harici kimlik doğrulama yöntemlerinin etkinleştirileceğini belirtir. Bu değişkenin değeri bir listedir. Liste `ldap` içeriyorsa LDAP kimlik doğrulaması etkinleştirilir.

Örneğin: `EXTERNAL_AUTH=ldap saml`

Overleaf CEP'ten farklı olarak, ayaka-notes sürümümüzde LDAP kimlik doğrulamasını salt bir kimlik doğrulama yöntemiyle sınırlıyoruz; bu yöntem `http://your-overleaf.com/ldap/login` adresinde kullanılabilir.

LDAP kimlik doğrulama yöntemleri kullanılırken, kullanıcı oturum açma formuna bir `username` ve `password` girdiğinde şu adımlar denenir:

1. `OVERLEAF_LDAP_SEARCH_FILTER` ile tanımlanan filtre kullanılarak LDAP dizininde bir LDAP kullanıcısı aranır ve kimliği doğrulanır.
2. Kimlik doğrulama başarılı olursa, Overleaf kullanıcı veritabanında birincil e-posta adresi, kimliği doğrulanan LDAP kullanıcısının e-posta adresiyle eşleşen bir kullanıcı aranır:
   * Eşleşen bir kullanıcı bulunursa, bu kullanıcının `hashedPassword` alanı (varsa) silinir. Bu, kullanıcının bundan sonra yalnızca LDAP kimlik doğrulaması ile oturum açabilmesini sağlar.
   * Eşleşen bir kullanıcı bulunamazsa, LDAP sunucusundan alınan e-posta, ad ve soyad kullanılarak yeni bir Overleaf kullanıcısı oluşturulur.

<Danger>
  LDAP üzerinden oturum açan kullanıcılar için Overleaf mongo veritabanında hash'lenmiş parola saklamayız (mevcut olanları da kaldırırız).
</Danger>

#### Ortam Değişkenleri

* `OVERLEAF_LDAP_URL` <strong>(zorunlu)</strong>
  * LDAP sunucusunun URL'si.
    * Örnek: `ldaps://ldap.example.com:636` (SSL üzerinden LDAP)
    * Örnek: `ldap://ldap.example.com:389` (şifrelenmemiş veya yapılandırılmışsa STARTTLS).
* `OVERLEAF_LDAP_IDENTITY_SERVICE_NAME`
  * LDAP kimlik hizmeti için oturum açma sayfasında kullanılan görünen ad.
  * Varsayılan olarak `Log in with LDAP Provider`.
* `OVERLEAF_LDAP_EMAIL_ATT`
  * LDAP sunucusu tarafından döndürülen e-posta özniteliği, varsayılan `mail`. Her LDAP kullanıcısının en az bir e-posta adresi olmalıdır. Birden fazla adres sağlanırsa yalnızca ilki kullanılır.
* `OVERLEAF_LDAP_FIRST_NAME_ATT`
  * Uygulamada kullanılan, kullanıcının adını tutan özellik adı; genellikle `givenName`.
* `OVERLEAF_LDAP_LAST_NAME_ATT`
  * Uygulamada kullanılan, kullanıcının soyadını tutan özellik adı; genellikle `sn`.
* `OVERLEAF_LDAP_NAME_ATT`
  * Kullanıcının tam adını tutan özellik adı; genellikle `cn`. Önceki iki değişkenden biri tanımlanmamışsa kullanıcının adı ve/veya soyadı bu değişkenden çıkarılır. Aksi halde kullanılmaz.
* `OVERLEAF_LDAP_PLACEHOLDER`
  * Oturum açma formu için yer tutucu metin; varsayılan `Username`.
* `OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN`
  * `true` olarak ayarlanırsa, oturum açıldığında LDAP kullanıcısının `first_name` ve `last_name` alanlarını günceller ve LDAP kullanıcıları için `/user/settings` sayfasındaki kullanıcı bilgileri formunu devre dışı bırakır. Aksi halde bilgiler yalnızca ilk oturum açışta alınır.
* `OVERLEAF_LDAP_BIND_DN`
  * LDAP bağlantısı için kullanılması gereken LDAP kullanıcısının ayırt edici adı (bu kullanıcı LDAP sunucusunda hesapları arayabilmeli/listeleyebilmelidir), örneğin `cn=ldap_reader,dc=example,dc=com`. Tanımlanmamışsa anonim bağlama kullanılır.
* `OVERLEAF_LDAP_BIND_CREDENTIALS`
  * `OVERLEAF_LDAP_BIND_DN` için parola.
* `OVERLEAF_LDAP_BIND_PROPERTY`
  * İstemciye karşı bağlama yapılacak kullanıcı özelliği; varsayılan `dn`.
* `OVERLEAF_LDAP_SEARCH_BASE` <strong>(zorunlu)</strong>
  * Kullanıcıların aranacağı temel DN. Örneğin `ou=people,dc=example,dc=com`.
* `OVERLEAF_LDAP_SEARCH_FILTER`
  * Bir kullanıcıyı bulmak için kullanılan LDAP arama filtresi. Verilen kullanıcı adının LDAP aramasına yerleştirilmesi için '\{\{username}}' ifadesini olduğu gibi kullanın.
    * Örnek: `(|(uid={{username}})(mail={{username}}))` (kullanıcı e-posta veya oturum açma adıyla giriş yapabilir).
    * Örnek: `(sAMAccountName={{username}})` (Active Directory).
* `OVERLEAF_LDAP_SEARCH_SCOPE`
  * Aramanın kapsamı `base`, `one` veya `sub` (varsayılan) olabilir.
* `OVERLEAF_LDAP_SEARCH_ATTRIBUTES`
  * LDAP sunucusundan alınacak özniteliklerin JSON dizisi, örneğin `["uid", "mail", "givenName", "sn"]`. Varsayılan olarak tüm öznitelikler alınır.
* `OVERLEAF_LDAP_STARTTLS`
  * `true` ise TLS üzerinden LDAP kullanılır.
* `OVERLEAF_LDAP_TLS_OPTS_CA_PATH`
  * LDAP sunucusunun SSL/TLS sertifikasını doğrulamak için kullanılan CA sertifikasını içeren dosyanın yolu. Birden fazla sertifika varsa sertifika yollarından oluşan bir JSON dizisi olabilir. Dosyalar Docker konteyneri tarafından erişilebilir olmalıdır.
    * Örnek (tek sertifika): `/var/lib/overleaf/certs/ldap_ca_cert.pem`
    * Örnek (birden fazla sertifika): `["/var/lib/overleaf/certs/ldap_ca_cert1.pem", "/var/lib/overleaf/certs/ldap_ca_cert2.pem"]`
* `OVERLEAF_LDAP_TLS_OPTS_REJECT_UNAUTH`
  * `true` ise sunucu sertifikası sağlanan CA listesine karşı doğrulanır.
* `OVERLEAF_LDAP_CACHE`
  * `true` ise aynı anda en fazla 100 kimlik bilgisi 5 dakika boyunca önbelleğe alınır.
* `OVERLEAF_LDAP_TIMEOUT`
  * İstemcinin işlemlerin zaman aşımına uğramadan önce ne kadar süre devam etmesine izin vereceği, ms (Varsayılan: Infinity).
* `OVERLEAF_LDAP_CONNECT_TIMEOUT`
  * İstemcinin TCP bağlantılarında zaman aşımına uğramadan önce ne kadar bekleyeceği, ms (Varsayılan: işletim sistemi varsayılanı).
* `OVERLEAF_LDAP_IS_ADMIN_ATT` ve `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE`
  * Her iki ortam değişkeni de ayarlandığında, LDAP profili `OVERLEAF_LDAP_IS_ADMIN_ATT` ile belirtilen özniteliği içeriyorsa ve bu özniteliğin değeri `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE` ile eşleşiyorsa veya `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE` içeren bir diziyse, oturum açma işlemi `user.isAdmin = true` olarak günceller; aksi halde `user.isAdmin` değeri `false` olarak ayarlanır. Bu değişkenlerden biri ayarlanmamışsa yönetici durumu yalnızca Launchpad'de yönetici kullanıcı oluşturulurken `true` olarak ayarlanır.

Aşağıdaki beş değişken, kullanıcı kişilerinin LDAP sunucusundan nasıl alınacağını yapılandırmak için kullanılır.

* `OVERLEAF_LDAP_CONTACTS_FILTER`
  * Kişilere yüklenecek kullanıcıları LDAP sunucusunda aramak için kullanılan filtre. Filtre içindeki '\{\{userProperty}}' yer tutucusu, aramayı başlatan LDAP kullanıcısının `OVERLEAF_LDAP_CONTACTS_PROPERTY` ile belirtilen özelliğinin değeriyle değiştirilir. Tanımlanmamışsa LDAP sunucusundan kişilere hiçbir kullanıcı alınmaz.
* `OVERLEAF_LDAP_CONTACTS_SEARCH_BASE`
  * Kişiler için aramaya başlanacak temel DN'yi belirtir. Varsayılan olarak `OVERLEAF_LDAP_SEARCH_BASE`.
* `OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE`
  * Aramanın kapsamı `base`, `one` veya `sub` (varsayılan) olabilir.
* `OVERLEAF_LDAP_CONTACTS_PROPERTY`
  * `OVERLEAF_LDAP_CONTACTS_FILTER` içindeki '\{\{userProperty}}' yer tutucusunun yerini alacak kullanıcı nesnesi özelliğini belirtir.
* `OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE`
  * Arama LDAP olmayan bir kullanıcı tarafından başlatılırsa `OVERLEAF_LDAP_CONTACTS_PROPERTY` değerini belirtir. Bu değişken tanımlanmamışsa ortaya çıkan filtre hiçbir şeyle eşleşmez. `*` değeri joker karakter olarak kullanılabilir.

<Accordion title="Örnek">
  ```text theme={null}
  OVERLEAF_LDAP_CONTACTS_FILTER=(gidNumber={{userProperty}})
  OVERLEAF_LDAP_CONTACTS_PROPERTY=gidNumber
  OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE=1000
  ```

  Yukarıdaki örnek, geçerli LDAP kullanıcısının kişilerine aynı UNIX `gid` değerine sahip tüm LDAP kullanıcılarının yüklenmesiyle sonuçlanır. LDAP olmayan kullanıcıların kişilerinde ise UNIX `gid=1000` değerine sahip tüm LDAP kullanıcıları bulunur.
</Accordion>

<Accordion title="Örnek variables.env dosyası">
  ```text theme={null}
  OVERLEAF_APP_NAME="Our Overleaf Instance"

  ENABLED_LINKED_FILE_TYPES=project_file,project_output_file,url

  # Enables Thumbnail generation using ImageMagick
  ENABLE_CONVERSIONS=true

  # Disables email confirmation requirement
  EMAIL_CONFIRMATION_DISABLED=true

  ## Nginx
  # NGINX_WORKER_PROCESSES=4
  # NGINX_WORKER_CONNECTIONS=768

  ## Set for TLS via nginx-proxy
  # OVERLEAF_BEHIND_PROXY=true
  # OVERLEAF_SECURE_COOKIE=true

  OVERLEAF_SITE_URL=http://my-overleaf-instance.com
  OVERLEAF_NAV_TITLE=Our Overleaf Instance
  # OVERLEAF_HEADER_IMAGE_URL=http://somewhere.com/mylogo.png
  OVERLEAF_ADMIN_EMAIL=support@example.com

  OVERLEAF_LEFT_FOOTER=[{"text": "Contact your support team", "url": "mailto:support@example.com"}]
  OVERLEAF_RIGHT_FOOTER=[{"text":"Hello, I am on the Right", "url":"https://github.com/yu-i-i/overleaf-cep"}]

  OVERLEAF_EMAIL_FROM_ADDRESS=team@example.com
  OVERLEAF_EMAIL_SMTP_HOST=smtp.example.com
  OVERLEAF_EMAIL_SMTP_PORT=587
  OVERLEAF_EMAIL_SMTP_SECURE=false
  # OVERLEAF_EMAIL_SMTP_USER=
  # OVERLEAF_EMAIL_SMTP_PASS=
  # OVERLEAF_EMAIL_SMTP_NAME=
  OVERLEAF_EMAIL_SMTP_LOGGER=false
  OVERLEAF_EMAIL_SMTP_TLS_REJECT_UNAUTH=true
  OVERLEAF_EMAIL_SMTP_IGNORE_TLS=false
  OVERLEAF_CUSTOM_EMAIL_FOOTER=This system is run by department x

  OVERLEAF_PROXY_LEARN=true
  NAV_HIDE_POWERED_BY=true

  #################
  ## LDAP for CE ##
  #################

  EXTERNAL_AUTH=ldap
  OVERLEAF_LDAP_URL=ldap://ldap.example.com:389
  OVERLEAF_LDAP_STARTTLS=true
  OVERLEAF_LDAP_TLS_OPTS_CA_PATH=/var/lib/overleaf/certs/ldap_ca_cert.pem
  OVERLEAF_LDAP_SEARCH_BASE=ou=people,dc=example,dc=com
  OVERLEAF_LDAP_SEARCH_FILTER=(|(uid={{username}})(mail={{username}}))
  OVERLEAF_LDAP_BIND_DN=cn=ldap_reader,dc=example,dc=com
  OVERLEAF_LDAP_BIND_CREDENTIALS=GoodNewsEveryone
  OVERLEAF_LDAP_EMAIL_ATT=mail
  OVERLEAF_LDAP_FIRST_NAME_ATT=givenName
  OVERLEAF_LDAP_LAST_NAME_ATT=sn
  # OVERLEAF_LDAP_NAME_ATT=cn
  OVERLEAF_LDAP_SEARCH_ATTRIBUTES=["uid", "sn", "givenName", "mail"]

  OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN=true

  OVERLEAF_LDAP_PLACEHOLDER='Username or email address'

  OVERLEAF_LDAP_IS_ADMIN_ATT=mail
  OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE=admin@example.com

  OVERLEAF_LDAP_CONTACTS_FILTER=(gidNumber={{userProperty}})
  OVERLEAF_LDAP_CONTACTS_PROPERTY=gidNumber
  OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE='*'
  ```
</Accordion>

## Adım adım: goauthentik

Bu bölüm, [goauthentik](https://goauthentik.io/) ile test edilmiş bir kurulumu adım adım anlatır. Örneklerde Base DN olarak `dc=example,dc=com` kullanılmıştır; bunu kendi değerinizle değiştirin.

<Steps>
  <Step title="Bir bind hesabı oluşturun">
    Overleaf, kullanıcıyı bulmak için önce kendine ait bir hesapla dizine oturum açar. Authentik'te **Directory > Users** sayfasını açın, **New User**'a tıklayın, **Internal User**'ı seçin ve **Next**'e tıklayın. Bir kullanıcı adı girin, örneğin `ldapservice`, ve **Create**'e tıklayın:

    <Frame caption="Authentik: bind hesabını oluşturma">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-user-create.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=bf5d9a5aefd048781339157121a9e203" alt="" width="1120" height="810" data-path="images/on-premises/ldap-authentik-user-create.png" />
    </Frame>

    Yeni kullanıcıyı açın ve **Set password**'e tıklayın. Bu parola `OVERLEAF_LDAP_BIND_CREDENTIALS` değişkenine yazılır:

    <div style={{ textAlign: "center" }}>
      <Frame caption="Authentik: bind hesabının parolasını ayarlama (test örneği)">
        <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-user-page.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=96aad0f919dc8e74fef5995b1dde1e78" alt="" width="207" data-path="images/on-premises/ldap-authentik-user-page.png" />
      </Frame>
    </div>

    Adres çubuğundaki kullanıcı numarasını not edin, örneğin `…/#/identity/users/19` içindeki `19`. Buna 3. adımda ihtiyacınız olacak.
  </Step>

  <Step title="Sağlayıcıyı ve uygulamayı oluşturun">
    **Applications > Applications** sayfasını açın ve **New Application**'a tıklayın. Sihirbaz, uygulamayı ve sağlayıcısını birlikte oluşturur.

    1\. Uygulamaya bir ad ve bir slug verin, örneğin `overleaf-ldap`, ve **Next**'e tıklayın:

    <Frame caption="Authentik: uygulamanın adı ve slug'ı">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-app.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=0d3e6b54e9bf552bd81d8b1d6b722701" alt="" width="1120" height="810" data-path="images/on-premises/ldap-authentik-app.png" />
    </Frame>

    2\. **LDAP Provider**'ı seçin ve **Next**'e tıklayın:

    <Frame caption="Authentik: LDAP sağlayıcısını seçme">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-type.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=ee63f2682051572a08c1f5bc321a1af6" alt="" width="1120" height="810" data-path="images/on-premises/ldap-authentik-type.png" />
    </Frame>

    3\. **Bind Mode**'u **Direct binding** ve **Search Mode**'u **Direct querying** olarak ayarlayın:

    <Frame caption="Authentik: LDAP sağlayıcısının bind ve arama modu">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-modes.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=ea147f1605e76142021d07f775d5ef53" alt="" width="1120" height="810" data-path="images/on-premises/ldap-authentik-modes.png" />
    </Frame>

    4\. Daha aşağıda **Bind Flow**'u `default-authentication-flow` ve **Base DN**'i kendi Base DN'iniz olarak ayarlayın, örneğin `dc=example,dc=com`:

    <Frame caption="Authentik: LDAP sağlayıcısının bind akışı ve Base DN'i">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-basedn.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=4ce418571d83294ee749d56b13c63d44" alt="" width="1120" height="810" data-path="images/on-premises/ldap-authentik-basedn.png" />
    </Frame>

    5\. Son sayfaya kadar **Next**'e tıklayın ve uygulamayı gönderin.
  </Step>

  <Step title="Bind hesabının dizinde arama yapmasına izin verin">
    Bu izin olmadan bind hesabı yalnızca kendisini görür, arama hiçbir kullanıcı bulamaz ve her LDAP oturum açma işlemi başarısız olur.

    Sağlayıcıyı açın, **Permissions** sekmesine gidin ve **Assign Role Object Permission**'a tıklayın. **Role** alanına 1. adımdaki numarayı yazın ve `ak-managed-role--user-<number>` öğesini seçin, ardından **Search full LDAP directory**'yi etkinleştirin:

    <Frame caption="Authentik: bind hesabına arama izni verme (test örneği)">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-assign.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=5af53c691ae845adcb4ede42c24fb600" alt="" width="1120" height="529" data-path="images/on-premises/ldap-authentik-assign.png" />
    </Frame>

    Rol bundan sonra **Search full LDAP directory** altında bir onay işareti gösterir:

    <Frame caption="Authentik: bir LDAP sağlayıcısının izinleri (test örneği)">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-permissions.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=24ae7f0dfb6d19e1b3d6584d6ccf0f0b" alt="" width="990" height="488" data-path="images/on-premises/ldap-authentik-permissions.png" />
    </Frame>
  </Step>

  <Step title="LDAP outpost'unu çalıştırın">
    Authentik, LDAP isteklerini ayrı bir container olan bir outpost aracılığıyla yanıtlar. **Applications > Outposts** sayfasını açın, sağlayıcınızla **LDAP** türünde bir outpost oluşturun ve Authentik'in anlattığı şekilde dağıtın. Outpost, çalıştığı ana makinenin 389 numaralı portunu dinler. Bağlandığında yeşil bir onay işareti gösterir:

    <Frame caption="Authentik: çalışan bir LDAP outpost'u (test örneği)">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-outposts.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=cd8af2f7df7b2df24d2369416509faef" alt="" width="990" height="468" data-path="images/on-premises/ldap-authentik-outposts.png" />
    </Frame>

    ```dotenv theme={null}
    OVERLEAF_LDAP_URL=ldap://ldap.example.com:389
    ```
  </Step>

  <Step title="DN'leri doldurun">
    Sağlayıcı sayfası, **How to connect** altında Base DN'i ve bir örneği gösterir:

    <Frame caption="Authentik: bir LDAP sağlayıcısına genel bakış (test örneği)">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/ldap-authentik-provider.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=9aa4b747f4c0f51533454a97d835c18c" alt="" width="990" height="773" data-path="images/on-premises/ldap-authentik-provider.png" />
    </Frame>

    Örnek değerleri olduğu gibi kopyalamayın:

    * **Bind DN**, oturum açtığınız hesabı gösterir. Bunun yerine 1. adımdaki bind hesabını kullanın: `cn=ldapservice,ou=users,<Base DN>`.
    * **Search base**, Base DN'i gösterir. `ou=users,<Base DN>` kullanın.

    ```dotenv theme={null}
    OVERLEAF_LDAP_BIND_DN=cn=ldapservice,ou=users,dc=example,dc=com
    OVERLEAF_LDAP_BIND_CREDENTIALS=<password of ldapservice>
    OVERLEAF_LDAP_SEARCH_BASE=ou=users,dc=example,dc=com
    OVERLEAF_LDAP_SEARCH_FILTER=(cn={{username}})
    ```

    <Warning>
      Authentik, `ou=virtual-groups` altında her kullanıcının adını taşıyan bir grup tutar. Tüm Base DN içinde `(cn=alice)` araması hem `cn=alice,ou=users,…` hem de `cn=alice,ou=virtual-groups,…` kaydını bulur ve Overleaf birden fazla kayıtla eşleşen bir oturum açma işlemini reddeder. Arama tabanını `ou=users,<Base DN>` olarak bırakın.
    </Warning>
  </Step>

  <Step title="Aramayı kontrol edin">
    Overleaf'i başlatmadan önce, Overleaf'in yapacağı aramayı çalıştırın. Çıktıda tam olarak bir `dn:` bulunmalıdır:

    ```shell theme={null}
    ldapsearch -x -H ldap://ldap.example.com:389 \
      -D cn=ldapservice,ou=users,dc=example,dc=com -w '<password of ldapservice>' \
      -b ou=users,dc=example,dc=com '(cn=alice)' dn
    ```

    Hiç `dn:` olmaması genellikle 3. adımdaki iznin eksik olduğu anlamına gelir.
  </Step>

  <Step title="Yöneticileri eşleyin (isteğe bağlı)">
    Bir kullanıcının grupları, `ou=groups` altındaki DN'ler olarak `memberOf` içinde bulunur. Authentik grubu `Admins` üyelerini Overleaf yöneticisi yapmak için:

    ```dotenv theme={null}
    OVERLEAF_LDAP_IS_ADMIN_ATT=memberOf
    OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE=cn=Admins,ou=groups,dc=example,dc=com
    ```

    <Warning>
      Yönetici bayrağı her LDAP oturum açma işleminde güncellenir. Yanlış bir öznitelik veya değerle, LDAP üzerinden oturum açan her yönetici yönetici haklarını kaybeder. Eşlemeyi önce ikinci bir yönetici hesabıyla test edin.
    </Warning>
  </Step>
</Steps>

<Accordion title="goauthentik için test edilmiş variables.env">
  ```dotenv title="variables.env" wrap theme={null}
  EXTERNAL_AUTH=ldap
  OVERLEAF_LDAP_IDENTITY_SERVICE_NAME=Log in with Authentik
  OVERLEAF_LDAP_URL=ldap://ldap.example.com:389
  OVERLEAF_LDAP_BIND_DN=cn=ldapservice,ou=users,dc=example,dc=com
  OVERLEAF_LDAP_BIND_CREDENTIALS=<password of ldapservice>
  OVERLEAF_LDAP_SEARCH_BASE=ou=users,dc=example,dc=com
  OVERLEAF_LDAP_SEARCH_FILTER=(cn={{username}})
  OVERLEAF_LDAP_EMAIL_ATT=mail
  OVERLEAF_LDAP_NAME_ATT=name
  OVERLEAF_LDAP_IS_ADMIN_ATT=memberOf
  OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE=cn=Admins,ou=groups,dc=example,dc=com
  OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN=true
  ```
</Accordion>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.