> 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/saml-authentication.md).

# SAML 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.

### Yapılandırma

Dahili olarak, Overleaf SAML modülü şunu kullanır: [passport-saml](https://github.com/node-saml/passport-saml) kitaplığı; aşağıdaki yapılandırma seçeneklerinin çoğu şuraya iletilir: `passport-saml`. SAML yapılandırmasında sorun yaşıyorsanız, şu öğe için README’yi okumak faydalı olabilir: `passport-saml` beklediği yapılandırma hakkında fikir edinmek için.

Çevre değişkeni `EXTERNAL_AUTH` SAML 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 şunu içeriyorsa `saml` o zaman SAML kimlik doğrulaması etkinleştirilecektir.

Örneğin: `EXTERNAL_AUTH=ldap saml`

SAML kimlik doğrulama yöntemi kullanıldığında, kullanıcı Kimlik Sağlayıcı (IdP) kimlik doğrulama sitesine yönlendirilir. IdP kullanıcıyı başarıyla doğrularsa, Overleaf kullanıcılar veritabanında bir kayıt aranır; bu kayıt bir `samlIdentifiers` alanı aşağıdaki gibi yapılandırılmıştır:

```json
samlIdentifiers: [
  {
    externalUserId: "...",
    providerId: "1",
    userIdAttribute: "..."
  }
]
```

Bu `externalUserId` şunun değeriyle eşleşmelidir: `userIdAttribute` IdP sunucusu tarafından döndürülen kullanıcı profilindeki özellikte.

Eşleşen bir kayıt bulunamazsa, veritabanında birincil e-posta adresi IdP kullanıcı profilindeki e-posta ile eşleşen bir kullanıcı aranır:

* Böyle bir kullanıcı bulunursa, `hashedPassword` alanı yerel kimlik doğrulamayı devre dışı bırakmak için silinir ve `samlIdentifiers` alanı eklenir.
* Eşleşen bir kullanıcı bulunamazsa, e-posta adresi ve `samlIdentifiers` IdP profilinden alınan. ile yeni bir kullanıcı oluşturulur.

**Not:** Şu anda yalnızca bir SAML IdP desteklenmektedir.  `providerId` alanı `samlIdentifiers` şuna sabittir: `'1'`.

#### Çevre Değişkenleri

* `OVERLEAF_SAML_IDENTITY_SERVICE_NAME`
  * Kimlik hizmeti için görünen ad, giriş sayfasında kullanılır (varsayılan: `SAML IdP ile giriş yap`).
* `OVERLEAF_SAML_USER_ID_FIELD`
  * Bu özniteliğin değeri Overleaf tarafından harici kullanıcı kimliği olarak kullanılacaktır, varsayılan: `nameID`.
* `OVERLEAF_SAML_EMAIL_FIELD`
  * Kullanıcı profilindeki Email alanının adı, varsayılan olarak `nameID`.
* `OVERLEAF_SAML_FIRST_NAME_FIELD`
  * Kullanıcı profilindeki firstName alanının adı, varsayılan olarak `givenName`.
* `OVERLEAF_SAML_LAST_NAME_FIELD`
  * Kullanıcı profilindeki lastName alanının adı, varsayılan olarak `lastName`
* `OVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN`
  * Şuna ayarlanırsa `true`, kullanıcıyı günceller `first_name` ve `last_name` alanını girişte güncelleyin ve kullanıcı ayrıntıları formunu kapatın `/user/settings` sayfasına bakın.
* `OVERLEAF_SAML_ENTRYPOINT` **(gerekli)**
  * SAML kimlik hizmeti için giriş noktası URL'si.
    * Örnek: `https://idp.example.com/simplesaml/saml2/idp/SSOService.php`
    * Azure Örneği: `https://login.microsoftonline.com/8b26b46a-6dd3-45c7-a104-f883f4db1f6b/saml2`
* `OVERLEAF_SAML_ISSUER` **(gerekli)**
  * Yayıncı adı.
* `OVERLEAF_SAML_AUDIENCE`
  * Beklenen SAML yanıtı Audience, varsayılan olarak şunun değerine ayarlanır: `OVERLEAF_SAML_ISSUER`.
* `OVERLEAF_SAML_IDP_CERT` **(gerekli)**
  * Kimlik Sağlayıcı'nın genel sertifikasını içeren bir dosyanın yolu; gelen SAML yanıtlarının imzalarını doğrulamak için kullanılır. Kimlik Sağlayıcı'nın birden fazla geçerli imzalama sertifikası varsa, bu sertifikalara giden yolların yer aldığı bir JSON dizisi olabilir.
    * Örnek (bir sertifika): `/var/lib/overleaf/certs/idp_cert.pem`
    * Örnek (birden fazla sertifika): `["var/lib/overleaf/certs/idp_cert.pem", "/var/lib/overleaf/certs/idp_cert_old.pem"]`
* `OVERLEAF_SAML_PUBLIC_CERT`
  * IdP'nin gelen SAML İsteğinin imzalarını doğrulaması için, kimlik doğrulama isteklerine gömülecek genel imzalama sertifikasını içeren bir dosyanın yolu.  [metadata uç noktası](https://github.com/yu-i-i/overleaf-cep/wiki/Extended-CE:-SAML-Authentication#metadata-for-the-identity-provider) strateji bir `OVERLEAF_SAML_PRIVATE_KEY`. Sertifika döndürmeyi desteklemek için sertifikalara giden yolların yer aldığı bir JSON dizisi sağlanabilir. Bir sertifika dizisi sağlanırken, dizideki ilk öğe mevcut `OVERLEAF_SAML_PRIVATE_KEY`. Dizideki ek öğeler, değişiklik yapmadan önce yaklaşan sertifikaları IdP'lere yayınlamak için kullanılabilir. `OVERLEAF_SAML_PRIVATE_KEY`.
* `OVERLEAF_SAML_PRIVATE_KEY`
  * ile eşleşen PEM biçimindeki özel anahtarı içeren bir dosyanın yolu `OVERLEAF_SAML_PUBLIC_CERT` passport-saml tarafından gönderilen kimlik doğrulama isteklerini imzalamak için kullanılır.
* `OVERLEAF_SAML_DECRYPTION_CERT`
  * Şu amaçla kullanılan genel sertifikayı içeren bir dosyanın yolu: [metadata uç noktası](https://github.com/yu-i-i/overleaf-cep/wiki/Extended-CE:-SAML-Authentication#metadata-for-the-identity-provider).
* `OVERLEAF_SAML_DECRYPTION_PVK`
  * ile eşleşen özel anahtarı içeren bir dosyanın yolu `OVERLEAF_SAML_DECRYPTION_CERT` bu, alınan şifrelenmiş tüm beyanları çözmeyi denemek için kullanılacaktır.
* `OVERLEAF_SAML_SIGNATURE_ALGORITHM`
  * İsteğe bağlı olarak istekleri imzalamak için imza algoritmasını ayarlayın; geçerli değerler 'sha1' (varsayılan), 'sha256' (tercih edilen), 'sha512' (en güvenli; IdP'nizin bunu destekleyip desteklemediğini kontrol edin) değerleridir.
* `OVERLEAF_SAML_ADDITIONAL_PARAMS`
  * Tüm isteklere eklenecek ek sorgu parametrelerinin JSON sözlüğü.
* `OVERLEAF_SAML_ADDITIONAL_AUTHORIZE_PARAMS`
  * 'authorize' isteklerine eklenecek ek sorgu parametrelerinin JSON sözlüğü.
    * Örnek: `{"some_key": "some_value"}`
* `OVERLEAF_SAML_IDENTIFIER_FORMAT`
  * Kimlik sağlayıcıdan istenecek ad tanımlayıcı biçimi (varsayılan: `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`). Eğer `urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`, şu değişkenin tanımlı olduğundan emin olun: `OVERLEAF_SAML_EMAIL_FIELD` ortam değişkeni tanımlı olmalıdır. Eğer `urn:oasis:names:tc:SAML:2.0:nameid-format:transient` gerekliyse, ayrıca şu değeri de tanımlamanız gerekir: `OVERLEAF_SAML_ID_FIELD` ortam değişkeni; örneğin kullanıcının e-posta adresi olarak ayarlanabilir.
* `OVERLEAF_SAML_ACCEPTED_CLOCK_SKEW_MS`
  * OnBefore ve NotOnOrAfter beyan koşulu geçerlilik zaman damgalarını denetlerken, istemci ve sunucu arasında kabul edilebilir kayma süresi milisaniye cinsinden. -1 olarak ayarlanırsa bu koşulların denetlenmesi tamamen devre dışı bırakılır. Varsayılan 0'dır.
* `OVERLEAF_SAML_ATTRIBUTE_CONSUMING_SERVICE_INDEX`
  * `AttributeConsumingServiceIndex` IdP'ye yanıta hangi öznitelik kümesini eklemesi gerektiğini belirtmek için AuthnRequest'e eklenecek öznitelik ([bağlantı](http://blog.aniljohn.com/2014/01/data-minimization-front-channel-saml-attribute-requests.html)).
* `OVERLEAF_SAML_AUTHN_CONTEXT`
  * Kimlik doğrulama bağlamı istemek için ad tanımlayıcı biçimi değerlerinin JSON dizisi. Varsayılan: `["urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"]`.
* `OVERLEAF_SAML_FORCE_AUTHN`
  * Eğer `true`, hizmet sağlayıcıdan gelen ilk SAML isteği, kullanıcı geçerli bir oturuma sahip olsa bile IdP'nin kullanıcının yeniden kimlik doğrulamasını zorlamasını belirtir.
* `OVERLEAF_SAML_DISABLE_REQUESTED_AUTHN_CONTEXT`
  * Eğer `true`, belirli bir kimlik doğrulama bağlamı istemeyin. Örneğin, bunu buna ayarlayabilirsiniz `true` parolasız girişler gibi ek bağlamlara izin vermek için (`urn:oasis:names:tc:SAML:2.0:ac:classes:X509`). Ek bağlamlar için destek, IdP'nize bağlıdır.
* `OVERLEAF_SAML_AUTHN_REQUEST_BINDING`
  * Şuna ayarlanırsa `HTTP-POST`, IdP'den HTTP POST binding üzerinden kimlik doğrulaması isteyecektir, aksi halde varsayılan olarak HTTP-Redirect kullanılır.
* `OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO`
  * Eğer `always`, o zaman InResponseTo gelen SAML yanıtlarından doğrulanacaktır.
  * Eğer `asla`, o zaman InResponseTo doğrulanmayacaktır (varsayılan).
  * Eğer `ifPresent`, o zaman InResponseTo yalnızca gelen SAML yanıtında mevcutsa doğrulanacaktır.
* `OVERLEAF_SAML_WANT_ASSERTIONS_SIGNED` ve `OVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED`
  * Şuna ayarlandığında `true` (varsayılan), Overleaf SAML İddialarının, sırasıyla tüm SAML Kimlik Doğrulama Yanıtının, IdP tarafından imzalanmasını bekler. Her iki seçenek de `false`, iddialardan veya yanıttan en az biri imzalanmış olmalıdır.
* `OVERLEAF_SAML_REQUEST_ID_EXPIRATION_PERIOD_MS`
  * Bir SAML isteği için oluşturulan Request ID'nin, SAML yanıtındaki `InResponseTo` alanında görüldüğünde geçerli olmayacağı son kullanma süresini tanımlar. Varsayılan: 28800000 (8 saat).
* `OVERLEAF_SAML_LOGOUT_URL`
  * çıkış istekleriyle çağrılacak temel adres (varsayılan: `entryPoint`).
    * Örnek: `https://idp.example.com/simplesaml/saml2/idp/SingleLogoutService.php`
* `OVERLEAF_SAML_ADDITIONAL_LOGOUT_PARAMS`
  * 'logout' isteklerine eklenecek ek sorgu parametrelerinin JSON sözlüğü.
* `OVERLEAF_SAML_IS_ADMIN_FIELD` ve `OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE`
  * Her iki çevre değişkeni de ayarlandığında, giriş süreci şunu günceller: `user.isAdmin = true` SAML IdP tarafından döndürülen profil, şununla belirtilen özniteliği içeriyorsa: `OVERLEAF_SAML_IS_ADMIN_FIELD` ve değeri ya ile eşleşiyorsa `OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE` veya şunları içeren bir dizi ise `OVERLEAF_SAML_IS_ADMIN_FIELD_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.

**Kimlik Sağlayıcı için metadata**

Overleaf CE'nin mevcut sürümü, Hizmet Sağlayıcı Metadata'sını almak için bir uç nokta içerir: `http://my-overleaf-instance.com/saml/meta`

Kimlik Sağlayıcı, Overleaf sunucusunu bir "Hizmet Sağlayıcı" olarak tanıyacak şekilde yapılandırılmalıdır. Bunu nasıl yapacağınıza ilişkin talimatlar için SAML sunucunuzun belgelerine bakın.

Aşağıda uygun Hizmet Sağlayıcı metadata'sına bir örnek verilmiştir:

<details>

<summary><strong>ol-meta.xml</strong></summary>

```
<?xml version="1.0"?>
<EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
                  xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
                  entityID="MyOverleaf"
                  ID="_b508c83b7dda452f5b269383fb391107116f8f57">
  <SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol" AuthnRequestsSigned="true" WantAssertionsSigned="true">
    <KeyDescriptor use="signing">
      <ds:KeyInfo>
        <ds:X509Data>
          <ds:X509Certificate>MII...
[atlandı]
</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </KeyDescriptor>
    <KeyDescriptor use="encryption">
      <ds:KeyInfo>
        <ds:X509Data>
          <ds:X509Certificate>MII...
[atlandı]
</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
      <EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
      <EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/>
      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
    </KeyDescriptor>
    <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
                         Location="https://my-overleaf-instance.com/saml/logout/callback"/>
    <NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</NameIDFormat>
    <AssertionConsumerService index="1"
                              isDefault="true"
                              Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
                              Location="https://my-overleaf-instance.com/saml/login/callback"/>
  </SPSSODescriptor>
</EntityDescriptor>

```

</details>

Sertifikalara dikkat edin, `AssertionConsumerService.Location`, `SingleLogoutService.Location` ve `EntityDescriptor.entityID` ve bunu IdP yapılandırmanızda uygun şekilde ayarlayın veya metadata dosyasını IdP yöneticisine gönderin.

<details>

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

<pre><code>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

#################
##     SAML    ##
#################

EXTERNAL_AUTH=saml
OVERLEAF_SAML_ISSUER=MyOverleaf
OVERLEAF_SAML_IDENTITY_SERVICE_NAME='SAML Sağlayıcısıyla giriş yap'
OVERLEAF_SAML_EMAIL_FIELD=Email
OVERLEAF_SAML_FIRST_NAME_FIELD=DisplayName
OVERLEAF_SAML_LAST_NAME_FIELD=DisplayName
OVERLEAF_SAML_ENTRYPOINT=http://localhost:18000/login/saml/authorize/admin/SAML_Overleaf
<strong>OVERLEAF_SAML_IDP_CERT=/var/lib/overleaf/certs/idp_cert.pem
</strong>OVERLEAF_SAML_SIGNATURE_ALGORITHM=
</code></pre>

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