> For the complete documentation index, see [llms.txt](https://ayakaleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ayakaleaf-pro.ayaka.space/on-premises/tr/yapilandirma/overleaf-toolkit/authentication/ldap-authentication.md).

# LDAP Kimlik Doğrulama

Bu özellik, [yu-i-i/overleaf-cep](https://github.com/yu-i-i/overleaf-cep). Burada yapılandırmanız için bazı belgeler sunuyoruz.

{% hint style="warning" %}
Overleaf, şunu kullanır **passport-ldapauth** kütüphanesi nispeten eski olduğundan, LDAP uyumluluğu tam olarak garanti edilemez. Belirli LDAP kimlik sağlayıcılarıyla (örneğin, <https://goauthentik.io/>), oturum açma hataları oluşabilir. Bu nedenle, mümkünse, daha önce OAuth/SAML yöntemini kullanmanız önerilir.
{% endhint %}

### LDAP nedir?

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

<figure><img src="/files/857ade2a58b0656fba1984dedf7da8befc1a3b24" alt=""><figcaption><p>LDAP için bir Server Pro örneği</p></figcaption></figure>

### Yapılandırma

Dahili olarak, Overleaf LDAP şunu kullanır: [passport-ldapauth](https://github.com/vesse/passport-ldapauth) kütüphanesini. `sunucu` yapılandırmak için kullanılan config nesnesine `passport-ldapauth`. LDAP yapılandırmasında sorun yaşıyorsanız, README dosyasını okumaya değer `passport-ldapauth` beklediği yapılandırma hakkında fikir edinmek için.

Ortam değişkeni `EXTERNAL_AUTH` LDAP kimlik doğrulama modülünü etkinleştirmek için gereklidir. Bu ortam değişkeni, hangi harici kimlik doğrulama yöntemlerinin etkinleştirildiğ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'den farklı olarak, ayaka-notes sürümümüzde LDAP kimlik doğrulamasını yalnızca saf bir kimlik doğrulama yöntemiyle sınırlandırıyoruz; bu, şu adreste kullanılabilir: `http://your-overleaf.com/ldap/login`.

LDAP kimlik doğrulama yöntemleri kullanılırken, bir kullanıcı bir `kullanıcı adı` ve `parola` giriş formuna girer, şu işlem denenir:

1. LDAP dizininde, tarafından tanımlanan filtre kullanılarak bir LDAP kullanıcısı aranır `OVERLEAF_LDAP_SEARCH_FILTER` ve kimlik doğrulaması yapılır.
2. Kimlik doğrulama başarılı olursa, Overleaf kullanıcı veritabanında kimliği doğrulanan LDAP kullanıcısının e-posta adresiyle eşleşen bir birincil e-posta adresine sahip kullanıcı aranır:
   * Eşleşen bir kullanıcı bulunursa, `hashedPassword` alanı bu kullanıcı için silinir (varsa). Bu, kullanıcının gelecekte yalnızca LDAP kimlik doğrulamasıyla giriş yapabilmesini sağlar.
   * Eşleşen kullanıcı bulunmazsa, LDAP sunucusundan alınan e-posta, ad ve soyad kullanılarak yeni bir Overleaf kullanıcısı oluşturulur.

{% hint style="danger" %}
LDAP üzerinden giriş yapan kullanıcılar için, Overleaf mongo veritabanında hashlenmiş parolaları saklamayız (veya mevcut olanları kaldırırız).
{% endhint %}

#### Ortam Değişkenleri

* `OVERLEAF_LDAP_URL` **(gerekli)**
  * 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`
  * Giriş sayfasında kullanılan LDAP kimlik hizmeti için görünen ad.
  * Varsayılan: `LDAP Sağlayıcısı ile Giriş Yap`.
* `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ılacaktı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ımlı değilse, kullanıcının adı ve/veya soyadı bu değişkenden çıkarılır. Aksi takdirde kullanılmaz.
* `OVERLEAF_LDAP_PLACEHOLDER`
  * Giriş formu için yer tutucu, varsayılan: `Kullanıcı adı`.
* `OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN`
  * Şu değere ayarlanırsa `true`, LDAP kullanıcısını günceller `first_name` ve `last_name` alanı girişte ve kullanıcı ayrıntıları formunu `/user/settings` sayfasında LDAP kullanıcıları için kapatır. Aksi takdirde ayrıntılar yalnızca ilk girişte alınır.
* `OVERLEAF_LDAP_BIND_DN`
  * LDAP bağlantısı için kullanılacak LDAP kullanıcısının ayırt edici adı (bu kullanıcı LDAP sunucusunda hesapları arayabilmeli/listeleyebilmelidir), örn., `cn=ldap_reader,dc=example,dc=com`. Tanımlı değilse, anonim bağlama kullanılır.
* `OVERLEAF_LDAP_BIND_CREDENTIALS`
  * Parola `OVERLEAF_LDAP_BIND_DN`.
* `OVERLEAF_LDAP_BIND_PROPERTY`
  * İstemciye karşı bağlanmak için kullanıcının özelliği, varsayılan `dn`.
* `OVERLEAF_LDAP_SEARCH_BASE` **(gerekli)**
  * Kullanıcıları aramak için temel DN. Örn., `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 tam olarak '{{username}}' ifadesini kullanın.
    * Örnek: `(|(uid={{username}})(mail={{username}}))` (kullanıcı e-posta ile veya giriş adıyla giriş yapabilir).
    * Örnek: `(sAMAccountName={{username}})` (Active Directory).
* `OVERLEAF_LDAP_SEARCH_SCOPE`
  * Aramanın kapsamı şu olabilir: `base`, `tek`, veya `alt` (varsayılan).
* `OVERLEAF_LDAP_SEARCH_ATTRIBUTES`
  * LDAP sunucusundan alınacak özniteliklerin JSON dizisi, örn., `["uid", "mail", "givenName", "sn"]`. Varsayılan olarak tüm öznitelikler alınır.
* `OVERLEAF_LDAP_STARTTLS`
  * Eğer `true`, 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, sertifikaların yollarından oluşan bir JSON dizisi olabilir. Dosyalar docker kapsayıcısı tarafından erişilebilir olmalıdır.
    * Örnek (bir 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`
  * Eğer `true`, sunucu sertifikası sağlanan CA listesinden doğrulanır.
* `OVERLEAF_LDAP_CACHE`
  * Eğer `true`, o zaman bir seferde 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 açık kalmasına 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, giriş işlemi günceller `user.isAdmin = true` eğer LDAP profili tarafından belirtilen özniteliği içeriyorsa `OVERLEAF_LDAP_IS_ADMIN_ATT` ve değeri ya eşleşiyorsa `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE` ya da içeren bir dizi ise `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE`, aksi takdirde `user.isAdmin` olarak ayarlanır `false`. Bu değişkenlerden herhangi biri ayarlı değilse, yönetici durumu yalnızca `true` Launchpad'de yönetici kullanıcı oluşturulurken ayarlanır.

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

* `OVERLEAF_LDAP_CONTACTS_FILTER`
  * Kişilere yüklenmek üzere LDAP sunucusunda kullanıcıları aramak için kullanılan filtre. Filtre içindeki '{{userProperty}}' yer tutucusu, tarafından belirtilen özelliğin değeriyle değiştirilir `OVERLEAF_LDAP_CONTACTS_PROPERTY` aramayı başlatan LDAP kullanıcısından. Tanımlı değilse, LDAP sunucusundan kişilere hiçbir kullanıcı alınmaz.
* `OVERLEAF_LDAP_CONTACTS_SEARCH_BASE`
  * Kişileri aramaya başlanacak temel DN'yi belirtir. Varsayılan: `OVERLEAF_LDAP_SEARCH_BASE`.
* `OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE`
  * Aramanın kapsamı şu olabilir: `base`, `tek`, veya `alt` (varsayılan).
* `OVERLEAF_LDAP_CONTACTS_PROPERTY`
  * içindeki '{{userProperty}}' yer tutucusunu yerine koyacak kullanıcı nesnesinin özelliğini belirtir `OVERLEAF_LDAP_CONTACTS_FILTER`.
* `OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE`
  * şunun değerini belirtir: `OVERLEAF_LDAP_CONTACTS_PROPERTY` eğer arama LDAP olmayan bir kullanıcı tarafından başlatılırsa. Bu değişken tanımlı değilse, oluşan filtre hiçbir şeyle eşleşmez. Değer `*` joker karakter olarak kullanılabilir.

<details>

<summary><strong>Örnek</strong></summary>

```
OVERLEAF_LDAP_CONTACTS_FILTER=(gidNumber={{userProperty}})
OVERLEAF_LDAP_CONTACTS_PROPERTY=gidNumber
OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE=1000
```

Yukarıdaki örnek, mevcut LDAP kullanıcısının kişilerine aynı UNIX'e sahip tüm LDAP kullanıcılarının yüklenmesiyle sonuçlanır `gid`. LDAP olmayan kullanıcıların kişilerinde, UNIX'e sahip tüm LDAP kullanıcıları bulunacaktır `gid=1000` kişilerinde.

</details>

<details>

<summary><strong>Örnek variables.env dosyası</strong></summary>

```
OVERLEAF_APP_NAME="Our Overleaf Instance"

ENABLED_LINKED_FILE_TYPES=project_file,project_output_file,url

# ImageMagick kullanarak küçük resim oluşturmayı etkinleştirir
ENABLE_CONVERSIONS=true

# E-posta doğrulama gereksinimini devre dışı bırakır
EMAIL_CONFIRMATION_DISABLED=true

## Nginx
# NGINX_WORKER_PROCESSES=4
# NGINX_WORKER_CONNECTIONS=768

## nginx-proxy üzerinden TLS için ayarlayın
# 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

#################
## CE için LDAP ##
#################

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='*'
```

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://ayakaleaf-pro.ayaka.space/on-premises/tr/yapilandirma/overleaf-toolkit/authentication/ldap-authentication.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
