Skip to main content
Cette fonctionnalité est développée par yu-i-i/overleaf-cep. Nous proposons ici quelques documents pour vous aider dans votre configuration.

Configuration

En interne, le module SAML d’Overleaf utilise la bibliothèque 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 :
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.
Remarque : 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 (obligatoire)
    • 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 (obligatoire)
    • 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 (obligatoire)
    • 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 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
  • 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).
  • 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 :
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.

Guide pas à pas avec goauthentik

Ce guide décrit une configuration testée avec goauthentik. Remplacez https://overleaf.example.com par votre OVERLEAF_SITE_URL et https://authentik.example.com par l’adresse de votre Authentik.
1

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 :

Authentik : nom et slug de l'application

2. Choisissez SAML Provider et cliquez sur Next :

Authentik : choisir le fournisseur SAML

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.

Authentik : le fournisseur SAML de l'application

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

Authentik : signature et liaison d'un fournisseur testé (instance de test)

5. Cliquez sur Next jusqu’à la dernière page et validez l’application.
2

Copier les valeurs depuis la page du fournisseur

Rouvrez le fournisseur. Tout ce dont Overleaf a besoin figure dans sa vue d’ensemble :

Authentik : vue d'ensemble d'un fournisseur SAML (instance de test)

EntityID/Issuer sous SAML Configuration est le nom d’Authentik lui-même. Ne le mettez pas dans OVERLEAF_SAML_ISSUER ; utilisez l’Audience.
3

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 :
4

Associer les attributs

Authentik envoie ses attributs sous ces noms :
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 :
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.
variables.env
Dernière modification le 6 octobre 2026