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

# Authentification SAML

<Info>
  Cette fonctionnalité est développée par [yu-i-i/overleaf-cep](https://github.com/yu-i-i/overleaf-cep). Nous proposons ici quelques documents pour vous aider dans votre configuration.
</Info>

### Configuration

En interne, le module SAML d'Overleaf utilise la bibliothèque [passport-saml](https://github.com/node-saml/passport-saml) ; la plupart des options de configuration suivantes sont transmises à `passport-saml`. Si vous rencontrez des difficultés pour configurer SAML, il est utile de lire le README de `passport-saml` pour vous faire une idée de la configuration attendue.

La variable d'environnement `EXTERNAL_AUTH` est requise pour activer le module d'authentification SAML. Cette variable d'environnement indique quelles méthodes d'authentification externes sont activées. Sa valeur est une liste. Si la liste contient `saml`, l'authentification SAML sera activée.

Par exemple : `EXTERNAL_AUTH=ldap saml`

Avec la méthode d'authentification SAML, l'utilisateur est redirigé vers le site d'authentification du fournisseur d'identité (IdP). Si l'IdP authentifie l'utilisateur avec succès, la base de données des utilisateurs Overleaf est consultée à la recherche d'un enregistrement contenant un champ `samlIdentifiers` structuré comme suit :

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

`externalUserId` doit correspondre à la valeur de la propriété indiquée par `userIdAttribute` dans le profil utilisateur renvoyé par le serveur IdP.

Si aucun enregistrement correspondant n'est trouvé, la base de données est parcourue à la recherche d'un utilisateur dont l'adresse e-mail principale correspond à l'e-mail du profil utilisateur de l'IdP :

* Si un tel utilisateur est trouvé, le champ `hashedPassword` est supprimé afin de désactiver l'authentification locale, et le champ `samlIdentifiers` est ajouté.
* Si aucun utilisateur correspondant n'est trouvé, un nouvel utilisateur est créé avec l'adresse e-mail et les `samlIdentifiers` issus du profil de l'IdP.

<strong>Remarque :</strong> actuellement, un seul IdP SAML est pris en charge. Le champ `providerId` de `samlIdentifiers` est fixé à `'1'`.

#### Variables d'environnement

* `OVERLEAF_SAML_IDENTITY_SERVICE_NAME`
  * Nom d'affichage du service d'identité, utilisé sur la page de connexion (par défaut : `Log in with SAML IdP`).
* `OVERLEAF_SAML_USER_ID_FIELD`
  * La valeur de cet attribut sera utilisée par Overleaf comme identifiant utilisateur externe, par défaut `nameID`.
* `OVERLEAF_SAML_EMAIL_FIELD`
  * Nom du champ e-mail dans le profil utilisateur, par défaut `nameID`.
* `OVERLEAF_SAML_FIRST_NAME_FIELD`
  * Nom du champ firstName dans le profil utilisateur, par défaut `givenName`.
* `OVERLEAF_SAML_LAST_NAME_FIELD`
  * Nom du champ lastName dans le profil utilisateur, par défaut `lastName`
* `OVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN`
  * Si elle vaut `true`, met à jour les champs `first_name` et `last_name` de l'utilisateur à la connexion, et désactive le formulaire des informations utilisateur sur la page `/user/settings`.
* `OVERLEAF_SAML_ENTRYPOINT` <strong>(obligatoire)</strong>
  * URL du point d'entrée du service d'identité SAML.
    * Exemple : `https://idp.example.com/simplesaml/saml2/idp/SSOService.php`
    * Exemple Azure : `https://login.microsoftonline.com/8b26b46a-6dd3-45c7-a104-f883f4db1f6b/saml2`
* `OVERLEAF_SAML_ISSUER` <strong>(obligatoire)</strong>
  * Le nom de l'émetteur (Issuer).
* `OVERLEAF_SAML_AUDIENCE`
  * Audience attendue dans la réponse SAML, par défaut la valeur de `OVERLEAF_SAML_ISSUER`.
* `OVERLEAF_SAML_IDP_CERT` <strong>(obligatoire)</strong>
  * Chemin vers un fichier contenant le certificat public du fournisseur d'identité, utilisé pour valider les signatures des réponses SAML entrantes. Si le fournisseur d'identité dispose de plusieurs certificats de signature valides, il peut s'agir d'un tableau JSON de chemins vers les certificats.
    * Exemple (un certificat) : `/var/lib/overleaf/certs/idp_cert.pem`
    * Exemple (plusieurs certificats) : `["var/lib/overleaf/certs/idp_cert.pem", "/var/lib/overleaf/certs/idp_cert_old.pem"]`
* `OVERLEAF_SAML_PUBLIC_CERT`
  * Chemin vers un fichier contenant le certificat public de signature à intégrer dans les requêtes d'authentification afin que l'IdP puisse valider les signatures de la requête SAML entrante. Il est requis lors de la mise en place du [point de terminaison de métadonnées](https://github.com/yu-i-i/overleaf-cep/wiki/Extended-CE:-SAML-Authentication#metadata-for-the-identity-provider) lorsque la stratégie est configurée avec `OVERLEAF_SAML_PRIVATE_KEY`. Un tableau JSON de chemins vers des certificats peut être fourni pour prendre en charge la rotation des certificats. Dans ce cas, la première entrée du tableau doit correspondre à la `OVERLEAF_SAML_PRIVATE_KEY` actuelle. Les entrées supplémentaires peuvent servir à publier les futurs certificats auprès des IdP avant de changer `OVERLEAF_SAML_PRIVATE_KEY`.
* `OVERLEAF_SAML_PRIVATE_KEY`
  * Chemin vers un fichier contenant une clé privée au format PEM correspondant à `OVERLEAF_SAML_PUBLIC_CERT`, utilisée pour signer les requêtes d'authentification envoyées par passport-saml.
* `OVERLEAF_SAML_DECRYPTION_CERT`
  * Chemin vers un fichier contenant le certificat public, utilisé pour le [point de terminaison de métadonnées](https://github.com/yu-i-i/overleaf-cep/wiki/Extended-CE:-SAML-Authentication#metadata-for-the-identity-provider).
* `OVERLEAF_SAML_DECRYPTION_PVK`
  * Chemin vers un fichier contenant la clé privée correspondant à `OVERLEAF_SAML_DECRYPTION_CERT`, qui sera utilisée pour tenter de déchiffrer les assertions chiffrées reçues.
* `OVERLEAF_SAML_SIGNATURE_ALGORITHM`
  * Permet de définir l'algorithme de signature des requêtes ; les valeurs valides sont 'sha1' (par défaut), 'sha256' (recommandé), 'sha512' (le plus sûr, vérifiez que votre IdP le prend en charge).
* `OVERLEAF_SAML_ADDITIONAL_PARAMS`
  * Dictionnaire JSON de paramètres de requête supplémentaires à ajouter à toutes les requêtes.
* `OVERLEAF_SAML_ADDITIONAL_AUTHORIZE_PARAMS`
  * Dictionnaire JSON de paramètres de requête supplémentaires à ajouter aux requêtes 'authorize'.
    * Exemple : `{"some_key": "some_value"}`
* `OVERLEAF_SAML_IDENTIFIER_FORMAT`
  * Format d'identifiant de nom à demander au fournisseur d'identité (par défaut : `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`). Si vous utilisez `urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`, assurez-vous que la variable d'environnement `OVERLEAF_SAML_EMAIL_FIELD` est définie. Si `urn:oasis:names:tc:SAML:2.0:nameid-format:transient` est requis, vous devez également définir la variable d'environnement `OVERLEAF_SAML_USER_ID_FIELD`, qui peut par exemple être définie sur l'adresse e-mail de l'utilisateur.
* `OVERLEAF_SAML_ACCEPTED_CLOCK_SKEW_MS`
  * Décalage d'horloge acceptable, en millisecondes, entre le client et le serveur lors de la vérification des horodatages de validité des conditions d'assertion OnBefore et NotOnOrAfter. La valeur -1 désactive entièrement la vérification de ces conditions. La valeur par défaut est 0.
* `OVERLEAF_SAML_ATTRIBUTE_CONSUMING_SERVICE_INDEX`
  * Attribut `AttributeConsumingServiceIndex` à ajouter à l'AuthnRequest pour indiquer à l'IdP quel ensemble d'attributs joindre à la réponse ([lien](http://blog.aniljohn.com/2014/01/data-minimization-front-channel-saml-attribute-requests.html)).
* `OVERLEAF_SAML_AUTHN_CONTEXT`
  * Tableau JSON de valeurs de format d'identifiant de nom pour demander le contexte d'authentification. Par défaut : `["urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"]`.
* `OVERLEAF_SAML_FORCE_AUTHN`
  * Si elle vaut `true`, la requête SAML initiale du fournisseur de services indique que l'IdP doit forcer une nouvelle authentification de l'utilisateur, même s'il possède une session valide.
* `OVERLEAF_SAML_DISABLE_REQUESTED_AUTHN_CONTEXT`
  * Si elle vaut `true`, aucun contexte d'authentification spécifique n'est demandé. Par exemple, vous pouvez la définir à `true` pour autoriser des contextes supplémentaires tels que les connexions sans mot de passe (`urn:oasis:names:tc:SAML:2.0:ac:classes:X509`). La prise en charge de contextes supplémentaires dépend de votre IdP.
* `OVERLEAF_SAML_AUTHN_REQUEST_BINDING`
  * Si elle vaut `HTTP-POST`, l'authentification sera demandée à l'IdP via le binding HTTP POST ; sinon, HTTP-Redirect est utilisé par défaut.
* `OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO`
  * Si `always`, InResponseTo sera validé dans les réponses SAML entrantes.
  * Si `never`, InResponseTo ne sera pas validé (par défaut).
  * Si `ifPresent`, InResponseTo ne sera validé que s'il est présent dans la réponse SAML entrante.
* `OVERLEAF_SAML_WANT_ASSERTIONS_SIGNED` et `OVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED`
  * Lorsqu'elles valent `true` (par défaut), Overleaf attend que les assertions SAML, ou respectivement la réponse d'authentification SAML entière, soient signées par l'IdP. Lorsque les deux options valent `false`, au moins les assertions ou la réponse doivent être signées.
* `OVERLEAF_SAML_REQUEST_ID_EXPIRATION_PERIOD_MS`
  * Définit le délai d'expiration après lequel un identifiant de requête généré pour une requête SAML ne sera plus valide s'il apparaît dans le champ `InResponseTo` d'une réponse SAML. Par défaut : 28800000 (8 heures).
* `OVERLEAF_SAML_LOGOUT_URL`
  * Adresse de base à appeler pour les requêtes de déconnexion (par défaut : `entryPoint`).
    * Exemple : `https://idp.example.com/simplesaml/saml2/idp/SingleLogoutService.php`
* `OVERLEAF_SAML_ADDITIONAL_LOGOUT_PARAMS`
  * Dictionnaire JSON de paramètres de requête supplémentaires à ajouter aux requêtes 'logout'.
* `OVERLEAF_SAML_IS_ADMIN_FIELD` et `OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE`
  * Lorsque ces deux variables d'environnement sont définies, le processus de connexion met à jour `user.isAdmin = true` si le profil renvoyé par l'IdP SAML contient l'attribut indiqué par `OVERLEAF_SAML_IS_ADMIN_FIELD` et que sa valeur correspond à `OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE` ou est un tableau contenant `OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE` ; sinon, `user.isAdmin` est défini à `false`. Si l'une de ces variables n'est pas définie, le statut d'administrateur n'est défini à `true` que lors de la création de l'utilisateur administrateur dans Launchpad.

**Métadonnées pour le fournisseur d'identité**

La version actuelle d'Overleaf CE inclut un point de terminaison permettant de récupérer les métadonnées du fournisseur de services : `http://my-overleaf-instance.com/saml/meta`

Le fournisseur d'identité devra être configuré pour reconnaître le serveur Overleaf comme « fournisseur de services » (Service Provider). Consultez la documentation de votre serveur SAML pour savoir comment procéder.

Voici un exemple de métadonnées appropriées pour le fournisseur de services :

<Accordion title="ol-meta.xml">
  ```text theme={null}
  <?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...
  [skipped]
  </ds:X509Certificate>
          </ds:X509Data>
        </ds:KeyInfo>
      </KeyDescriptor>
      <KeyDescriptor use="encryption">
        <ds:KeyInfo>
          <ds:X509Data>
            <ds:X509Certificate>MII...
  [skipped]
  </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>

  ```
</Accordion>

Notez les certificats, `AssertionConsumerService.Location`, `SingleLogoutService.Location` et `EntityDescriptor.entityID`, et définissez-les de manière appropriée dans la configuration de votre IdP, ou envoyez le fichier de métadonnées à l'administrateur de l'IdP.

<Accordion title="Exemple de fichier variables.env (minimal)">
  ```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

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

  EXTERNAL_AUTH=saml
  OVERLEAF_SAML_ISSUER=MyOverleaf
  OVERLEAF_SAML_IDENTITY_SERVICE_NAME='Log in with SAML Provider'
  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
  OVERLEAF_SAML_IDP_CERT=/var/lib/overleaf/certs/idp_cert.pem
  OVERLEAF_SAML_SIGNATURE_ALGORITHM=
  ```
</Accordion>

## Guide pas à pas avec goauthentik

Ce guide décrit une configuration testée avec [goauthentik](https://goauthentik.io/). Remplacez `https://overleaf.example.com` par votre `OVERLEAF_SITE_URL` et `https://authentik.example.com` par l'adresse de votre Authentik.

<Steps>
  <Step title="Créer le fournisseur et l'application">
    Dans Authentik, ouvrez **Applications > Applications** et cliquez sur **New Application**. L'assistant crée l'application et son fournisseur en même temps.

    1\. Donnez à l'application un nom et un slug, par exemple `overleaf`, puis cliquez sur **Next** :

    <Frame caption="Authentik : nom et slug de l'application">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/saml-authentik-app.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=e2405f63578ab00991ad5046665eab32" alt="" width="1120" height="810" data-path="images/on-premises/saml-authentik-app.png" />
    </Frame>

    2\. Choisissez **SAML Provider** et cliquez sur **Next** :

    <Frame caption="Authentik : choisir le fournisseur SAML">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/saml-authentik-type.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=537780362698d5088132048754ac6481" alt="" width="1120" height="810" data-path="images/on-premises/saml-authentik-type.png" />
    </Frame>

    3\. Renseignez le fournisseur :

    * **Authorization Flow** : `default-provider-authorization-implicit-consent`
    * **ACS URL** : `https://overleaf.example.com/saml/login/callback`
    * **Audience** : un nom pour Overleaf, par exemple `overleaf`. Overleaf l'envoie en tant que `OVERLEAF_SAML_ISSUER`.

    <Frame caption="Authentik : le fournisseur SAML de l'application">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/saml-authentik-create.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=4f15b87b90b355e13831b95c07abe427" alt="" width="1120" height="810" data-path="images/on-premises/saml-authentik-create.png" />
    </Frame>

    4\. Ouvrez **Advanced protocol settings** et définissez :

    * **Signing Certificate** : un certificat, par exemple `authentik Self-signed Certificate`
    * **Sign assertions** et **Sign responses** : tous deux activés
    * **Service Provider Binding** : `Post`

    <Frame caption="Authentik : signature et liaison d'un fournisseur testé (instance de test)">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/saml-authentik-advanced.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=39b136a219fb192ed42d337de0058166" alt="" width="1089" height="417" data-path="images/on-premises/saml-authentik-advanced.png" />
    </Frame>

    5\. Cliquez sur **Next** jusqu'à la dernière page et validez l'application.
  </Step>

  <Step title="Copier les valeurs depuis la page du fournisseur">
    Rouvrez le fournisseur. Tout ce dont Overleaf a besoin figure dans sa vue d'ensemble :

    <Frame caption="Authentik : vue d'ensemble d'un fournisseur SAML (instance de test)">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/saml-authentik-provider.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=b73f3aa817b7a18286db6d810ab3b2e9" alt="" width="990" height="963" data-path="images/on-premises/saml-authentik-provider.png" />
    </Frame>

    | Sur la page du fournisseur | Variable d'environnement |
    | - | - |
    | **SAML Endpoint** | `OVERLEAF_SAML_ENTRYPOINT` et `OVERLEAF_SAML_LOGOUT_URL` |
    | **Audience** | `OVERLEAF_SAML_ISSUER` |
    | **Download signing certificate** (un fichier) | `OVERLEAF_SAML_IDP_CERT`, voir l'étape suivante |

    <Warning>
      **EntityID/Issuer** sous **SAML Configuration** est le nom d'Authentik lui-même. Ne le mettez pas dans `OVERLEAF_SAML_ISSUER` ; utilisez l'**Audience**.
    </Warning>
  </Step>

  <Step title="Installer le certificat de signature">
    Cliquez sur **Download** sous **Download signing certificate** et enregistrez le fichier sous `data/overleaf/certs/idp_cert.pem` dans votre répertoire Toolkit. Le conteneur le voit sous `/var/lib/overleaf/certs/idp_cert.pem` :

    ```dotenv theme={null}
    OVERLEAF_SAML_IDP_CERT=/var/lib/overleaf/certs/idp_cert.pem
    ```
  </Step>

  <Step title="Associer les attributs">
    Authentik envoie ses attributs sous ces noms :

    ```dotenv theme={null}
    OVERLEAF_SAML_USER_ID_FIELD=http://schemas.goauthentik.io/2021/02/saml/username
    OVERLEAF_SAML_EMAIL_FIELD=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
    OVERLEAF_SAML_FIRST_NAME_FIELD=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
    OVERLEAF_SAML_LAST_NAME_FIELD=http://schemas.goauthentik.io/2021/02/saml/username
    ```

    Les groupes arrivent sous `http://schemas.xmlsoap.org/claims/Group`, sous forme de liste. Pour que les membres du groupe Authentik `Admins` deviennent administrateurs d'Overleaf :

    ```dotenv theme={null}
    OVERLEAF_SAML_IS_ADMIN_FIELD=http://schemas.xmlsoap.org/claims/Group
    OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE=Admins
    ```

    <Warning>
      L'indicateur d'administrateur est mis à jour à chaque connexion SAML. Avec un champ ou une valeur incorrects, tout administrateur qui se connecte via SAML perd ses droits d'administrateur. Testez d'abord l'association avec un second compte administrateur.
    </Warning>
  </Step>
</Steps>

<Accordion title="Fichier variables.env testé pour goauthentik">
  ```dotenv title="variables.env" wrap theme={null}
  EXTERNAL_AUTH=saml
  OVERLEAF_SAML_IDENTITY_SERVICE_NAME=Log in with Authentik
  OVERLEAF_SAML_ENTRYPOINT=https://authentik.example.com/application/saml/overleaf/
  OVERLEAF_SAML_LOGOUT_URL=https://authentik.example.com/application/saml/overleaf/
  OVERLEAF_SAML_ISSUER=overleaf
  OVERLEAF_SAML_IDP_CERT=/var/lib/overleaf/certs/idp_cert.pem
  OVERLEAF_SAML_WANT_ASSERTIONS_SIGNED=true
  OVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED=true
  OVERLEAF_SAML_USER_ID_FIELD=http://schemas.goauthentik.io/2021/02/saml/username
  OVERLEAF_SAML_EMAIL_FIELD=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
  OVERLEAF_SAML_FIRST_NAME_FIELD=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
  OVERLEAF_SAML_LAST_NAME_FIELD=http://schemas.goauthentik.io/2021/02/saml/username
  OVERLEAF_SAML_IS_ADMIN_FIELD=http://schemas.xmlsoap.org/claims/Group
  OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE=Admins
  OVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN=true
  ```
</Accordion>


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