> For the complete documentation index, see [llms.txt](https://overleaf-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://overleaf-pro.ayaka.space/on-premises/tr/yapilandirma/overleaf-toolkit/authentication/ldap-authentication.md).

# LDAP Kimlik Doğrulama

Bu özellik tarafından geliştirilmiştir [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** kitaplığı, 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, dış kimlik doğrulaması için kullanılan bir kimlik doğrulama protokolüdür. Overleaf Server Pro, standart kimlik doğrulama yönteminden ayrı olarak web arayüzünde özel bir LDAP giriş formu sağlar. Bir kullanıcı LDAP kullanıcı adını ve şifresini gönderdiğinde, Overleaf arka ucu 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) kitaplığı. Bu yapılandırma seçeneklerinin çoğu şuraya iletilir: `sunucu` yapılandırma nesnesi, şunu yapılandırmak için kullanılır: `passport-ldapauth`. LDAP yapılandırırken sorun yaşıyorsanız, README dosyasını okumak faydalı olabilir: `passport-ldapauth` beklediği yapılandırma hakkında fikir edinmek için.

Çevre değişkeni `EXTERNAL_AUTH` LDAP kimlik doğrulama modülünü etkinleştirmek için gereklidir. Bu çevre değişkeni, hangi harici kimlik doğrulama yöntemlerinin etkinleştirildiğini belirtir. Bu değişkenin değeri bir listedir. Liste şunu içerirse `ldap` o zaman 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ğrulamayı yalnızca bir kimlik doğrulama yöntemi olarak sınırlandırıyoruz; bu yöntem şurada kullanılabilir: `http://your-overleaf.com/ldap/login`.

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

1. LDAP dizininde, tarafından tanımlanan filtre kullanılarak bir LDAP kullanıcısı aranır `OVERLEAF_LDAP_SEARCH_FILTER` ve kimliği doğrulanır.
2. Kimlik doğrulama başarılı olursa, Overleaf kullanıcılar veritabanında kimliği doğrulanmış LDAP kullanıcısının e-posta adresiyle eşleşen birincil e-posta adresine sahip bir kullanıcı kontrol edilir:
   * 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 oturum açabilmesini sağlar.
   * Eşleşen bir 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 karma parolaları saklamayız (veya mevcut olanları kaldırırız).
{% endhint %}

#### Çevre 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ıyla 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 ilk olan 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şkenin hiçbiri tanımlı değilse, kullanıcının adı ve/veya soyadı bu değişkenden çıkarılır. Aksi halde kullanılmaz.
* `OVERLEAF_LDAP_PLACEHOLDER`
  * Giriş formu için yer tutucu, varsayılan: `Kullanıcı adı`.
* `OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN`
  * Şuna ayarlanırsa `true`, LDAP kullanıcısını günceller `first_name` ve `last_name` alanını girişte günceller ve kullanıcı ayrıntıları formunu şurada kapatır: `/user/settings` sayfasında LDAP kullanıcıları için. Aksi halde 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 sunucusundaki 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`
  * şifresi `OVERLEAF_LDAP_BIND_DN`.
* `OVERLEAF_LDAP_BIND_PROPERTY`
  * İstemciye karşı bağlanılacak kullanıcının özelliği, varsayılan: `dn`.
* `OVERLEAF_LDAP_SEARCH_BASE` **(gerekli)**
  * Kullanıcıları aramak için kullanılacak temel DN. Örn.: `ou=people,dc=example,dc=com`.
* `OVERLEAF_LDAP_SEARCH_FILTER`
  * Bir kullanıcıyı bulmak için kullanılacak LDAP arama filtresi. LDAP araması için verilen kullanıcı adının yerine geçirilmesini sağlamak için gerçek '{{username}}' ifadesini kullanın.
    * Örnek: `(|(uid={{username}})(mail={{username}}))` (kullanıcı e-posta ile veya giriş adıyla oturum açabilir).
    * Örnek: `(sAMAccountName={{username}})` (Active Directory).
* `OVERLEAF_LDAP_SEARCH_SCOPE`
  * Aramanın kapsamı şu olabilir: `base`, `bir`, ya da `sub` (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`, LDAP TLS üzerinden 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, bu sertifikalara giden yolların bulunduğu bir JSON dizisi olabilir. Dosyalar docker kapsayıcısının erişebileceği şekilde 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'lar listesine karşı doğrulanır.
* `OVERLEAF_LDAP_CACHE`
  * Eğer `true`, ardından bir seferde en fazla 100 kimlik bilgisi 5 dakika ö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 süre bekleyeceği, ms (Varsayılan: OS varsayılanı).
* `OVERLEAF_LDAP_IS_ADMIN_ATT` ve `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE`
  * Her iki çevre değişkeni de ayarlandığında, giriş süreci şunu günceller: `user.isAdmin = true` LDAP profilinde tarafından belirtilen öznitelik varsa `OVERLEAF_LDAP_IS_ADMIN_ATT` ve değeri ya ile eşleşiyorsa `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE` veya şunları içeren bir dizi ise `OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE`, aksi halde `user.isAdmin` şuna 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şturma sırasında olarak 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üklenecek kullanıcıları LDAP sunucusunda 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` LDAP aramasını 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şiler için aramaya başlanacak temel DN'yi belirtir. Varsayılan: `OVERLEAF_LDAP_SEARCH_BASE`.
* `OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE`
  * Aramanın kapsamı şu olabilir: `base`, `bir`, ya da `sub` (varsayılan).
* `OVERLEAF_LDAP_CONTACTS_PROPERTY`
  * Kullanıcı nesnesinin, şuradaki '{{userProperty}}' yer tutucusunun yerini alacak özelliğini belirtir `OVERLEAF_LDAP_CONTACTS_FILTER`.
* `OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE`
  * şunun değeri: `OVERLEAF_LDAP_CONTACTS_PROPERTY` 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 şeyi eşleştirmez. 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, aynı UNIX'e sahip tüm LDAP kullanıcılarını geçerli LDAP kullanıcısının kişilerine yükler `gid`. LDAP olmayan kullanıcıların kişilerinde UNIX'e sahip tüm LDAP kullanıcıları yer alır `gid=1000` olarak.

</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

# Thumbnail oluşturmayı ImageMagick kullanarak etkinleştirir
ENABLE_CONVERSIONS=true

# E-posta onayı 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 ayarla
# OVERLEAF_BEHIND_PROXY=true
# OVERLEAF_SECURE_COOKIE=true

OVERLEAF_SITE_URL=http://my-overleaf-instance.com
OVERLEAF_NAV_TITLE=Bizim Overleaf Örneğimiz
# OVERLEAF_HEADER_IMAGE_URL=http://somewhere.com/mylogo.png
OVERLEAF_ADMIN_EMAIL=support@example.com

OVERLEAF_LEFT_FOOTER=[{"text": "Destek ekibinizle iletişime geçin", "url": "mailto:support@example.com"}]
OVERLEAF_RIGHT_FOOTER=[{"text":"Merhaba, ben Sağ taraftayım", "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=Bu sistem x departmanı tarafından işletilmektedir

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='Kullanıcı adı veya e-posta adresi'

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://overleaf-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.
