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

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

### Yapılandırma

Dahili olarak, Overleaf SAML modülü [passport-saml](https://github.com/node-saml/passport-saml) kütüphanesini kullanır, aşağıdaki yapılandırma seçeneklerinin çoğu buna aktarılır `passport-saml`. SAML'i yapılandırırken sorun yaşıyorsanız, bunun README'sini okumaya değer `passport-saml` beklediği yapılandırma hakkında fikir edinmek için.

Ortam değişkeni `EXTERNAL_AUTH` SAML kimlik doğrulama modülünü etkinleştirmek için gereklidir. Bu ortam değişkeni, hangi dış kimlik doğrulama yöntemlerinin etkinleştirildiğini belirtir. Bu değişkenin değeri bir listedir. Liste `saml` içeriyorsa, SAML kimlik doğrulaması etkinleştirilir.

Ö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ı veritabanında bir kayıt içeren bir `samlIdentifiers` alanı aşağıdaki gibi yapılandırılmış:

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

Bu `externalUserId` değeri, `userIdAttribute` ile eşleşmelidir.

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

* Eğer 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 kullanıcı bulunamazsa, e-posta adresi ve `samlIdentifiers` ile IdP profilinden alınan yeni bir kullanıcı oluşturulur.

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

#### Ortam Değişkenleri

* `OVERLEAF_SAML_IDENTITY_SERVICE_NAME`
  * Kimlik hizmeti için görüntülenen 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 dış kullanıcı kimliği olarak kullanılacaktır, varsayılan: `nameID`.
* `OVERLEAF_SAML_EMAIL_FIELD`
  * Kullanıcı profilindeki E-posta 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`
  * Şu değere 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ı.
* `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ınlayıcı adı.
* `OVERLEAF_SAML_AUDIENCE`
  * Beklenen saml yanıtı Audience, varsayılan olarak şuna ayarlanır: `OVERLEAF_SAML_ISSUER`.
* `OVERLEAF_SAML_IDP_CERT` **(gerekli)**
  * Kimlik Sağlayıcının genel sertifikasını içeren 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 yol 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`
  * Kimlik sağlayıcının gelen SAML isteğinin imzalarını doğrulayabilmesi için kimlik doğrulama isteklerine gömülecek genel imzalama sertifikasını içeren dosyanın yolu. Kurulumu yaparken gereklidir [meta veri 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 giriş mevcut `OVERLEAF_SAML_PRIVATE_KEY`. Dizideki ek girişler, değiştirmeden önce yaklaşan sertifikaları IdP'lere yayınlamak için kullanılabilir `OVERLEAF_SAML_PRIVATE_KEY`.
* `OVERLEAF_SAML_PRIVATE_KEY`
  * eşleşen PEM biçiminde özel anahtarı içeren 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`
  * Genel sertifikayı içeren dosyanın yolu; bunun için kullanılır [meta veri uç noktası](https://github.com/yu-i-i/overleaf-cep/wiki/Extended-CE:-SAML-Authentication#metadata-for-the-identity-provider).
* `OVERLEAF_SAML_DECRYPTION_PVK`
  * eşleşen özel anahtarı içeren dosyanın yolu `OVERLEAF_SAML_DECRYPTION_CERT` alınan herhangi bir şifreli beyanı çözmeye çalışmak 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).
* `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 name identifier 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`, olduğundan emin olun `OVERLEAF_SAML_EMAIL_FIELD` ortam değişkeninin tanımlı olduğundan emin olun. Eğer `urn:oasis:names:tc:SAML:2.0:nameid-format:transient` gerekliyse, ayrıca `OVERLEAF_SAML_ID_FIELD` ortam değişkenini de tanımlamalısınız; bu değişken örneğin kullanıcının e-posta adresi olarak ayarlanabilir.
* `OVERLEAF_SAML_ACCEPTED_CLOCK_SKEW_MS`
  * OnBefore ve NotOnOrAfter iddia koşulu geçerlilik zaman damgaları kontrol edilirken istemci ve sunucu arasında kabul edilebilir kayma süresi (milisaniye cinsinden). -1 olarak ayarlamak bu koşulların kontrolünü tamamen devre dışı bırakır. Varsayılan 0'dır.
* `OVERLEAF_SAML_ATTRIBUTE_CONSUMING_SERVICE_INDEX`
  * `AttributeConsumingServiceIndex` özniteliği, IdP'ye yanıtla hangi öznitelik kümesinin iliştirileceğini bildirmek için AuthnRequest'e eklenecek özniteliktir ([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 name identifier 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 `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ğlamlara destek IdP'nize bağlıdır.
* `OVERLEAF_SAML_AUTHN_REQUEST_BINDING`
  * Şu değere ayarlanırsa `HTTP-POST`, IdP'den HTTP POST binding üzerinden kimlik doğrulama isteyecektir; aksi halde varsayılan olarak HTTP-Redirect kullanılır.
* `OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO`
  * Eğer `always`, InResponseTo gelen SAML yanıtlarından doğrulanacaktır.
  * Eğer `asla`, InResponseTo doğrulanmayacaktır (varsayılan).
  * Eğer `ifPresent`, InResponseTo yalnızca gelen SAML yanıtında varsa doğrulanacaktır.
* `OVERLEAF_SAML_WANT_ASSERTIONS_SIGNED` ve `OVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED`
  * Şu değere ayarlandığında `true` (varsayılan), Overleaf SAML Beyanlarının ve 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`, beyanlardan veya yanıttan en az biri imzalanmalıdır.
* `OVERLEAF_SAML_REQUEST_ID_EXPIRATION_PERIOD_MS`
  * Bir SAML isteği için oluşturulan Request ID'nin, SAML yanıtının `InResponseTo` alanında görülmesi durumunda 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 ortam değişkeni de ayarlandığında, giriş işlemi günceller `user.isAdmin = true` SAML IdP tarafından döndürülen profil `OVERLEAF_SAML_IS_ADMIN_FIELD` ve değeri ya eşleşiyorsa `OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE` ya da içeren bir dizi ise `OVERLEAF_SAML_IS_ADMIN_FIELD_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.

**Kimlik Sağlayıcı için meta veriler**

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

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

Aşağıda uygun Hizmet Sağlayıcı meta verilerinin bir örneği 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 bunları IdP yapılandırmanızda uygun şekilde ayarlayın ya da meta veri 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

# 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

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

EXTERNAL_AUTH=saml
OVERLEAF_SAML_ISSUER=MyOverleaf
OVERLEAF_SAML_IDENTITY_SERVICE_NAME='SAML Sağlayıcısı ile 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://ayakaleaf-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.
