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 samlAvec 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'.
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.
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/metaLe 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.
Exemple de fichier variables.env (minimal)
OVERLEAF_APP_NAME="Our Overleaf Instance"ENABLED_LINKED_FILE_TYPES=project_file,project_output_file,url# Enables Thumbnail generation using ImageMagickENABLE_CONVERSIONS=true# Disables email confirmation requirementEMAIL_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=trueOVERLEAF_SITE_URL=http://my-overleaf-instance.comOVERLEAF_NAV_TITLE=Our Overleaf Instance# OVERLEAF_HEADER_IMAGE_URL=http://somewhere.com/mylogo.pngOVERLEAF_ADMIN_EMAIL=support@example.comOVERLEAF_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.comOVERLEAF_EMAIL_SMTP_HOST=smtp.example.comOVERLEAF_EMAIL_SMTP_PORT=587OVERLEAF_EMAIL_SMTP_SECURE=false# OVERLEAF_EMAIL_SMTP_USER=# OVERLEAF_EMAIL_SMTP_PASS=# OVERLEAF_EMAIL_SMTP_NAME=OVERLEAF_EMAIL_SMTP_LOGGER=falseOVERLEAF_EMAIL_SMTP_TLS_REJECT_UNAUTH=trueOVERLEAF_EMAIL_SMTP_IGNORE_TLS=falseOVERLEAF_CUSTOM_EMAIL_FOOTER=This system is run by department xOVERLEAF_PROXY_LEARN=trueNAV_HIDE_POWERED_BY=true################### SAML ###################EXTERNAL_AUTH=samlOVERLEAF_SAML_ISSUER=MyOverleafOVERLEAF_SAML_IDENTITY_SERVICE_NAME='Log in with SAML Provider'OVERLEAF_SAML_EMAIL_FIELD=EmailOVERLEAF_SAML_FIRST_NAME_FIELD=DisplayNameOVERLEAF_SAML_LAST_NAME_FIELD=DisplayNameOVERLEAF_SAML_ENTRYPOINT=http://localhost:18000/login/saml/authorize/admin/SAML_OverleafOVERLEAF_SAML_IDP_CERT=/var/lib/overleaf/certs/idp_cert.pemOVERLEAF_SAML_SIGNATURE_ALGORITHM=
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 :
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)
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
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 :
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.
Fichier variables.env testé pour goauthentik
variables.env
EXTERNAL_AUTH=samlOVERLEAF_SAML_IDENTITY_SERVICE_NAME=Log in with AuthentikOVERLEAF_SAML_ENTRYPOINT=https://authentik.example.com/application/saml/overleaf/OVERLEAF_SAML_LOGOUT_URL=https://authentik.example.com/application/saml/overleaf/OVERLEAF_SAML_ISSUER=overleafOVERLEAF_SAML_IDP_CERT=/var/lib/overleaf/certs/idp_cert.pemOVERLEAF_SAML_WANT_ASSERTIONS_SIGNED=trueOVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED=trueOVERLEAF_SAML_USER_ID_FIELD=http://schemas.goauthentik.io/2021/02/saml/usernameOVERLEAF_SAML_EMAIL_FIELD=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddressOVERLEAF_SAML_FIRST_NAME_FIELD=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameOVERLEAF_SAML_LAST_NAME_FIELD=http://schemas.goauthentik.io/2021/02/saml/usernameOVERLEAF_SAML_IS_ADMIN_FIELD=http://schemas.xmlsoap.org/claims/GroupOVERLEAF_SAML_IS_ADMIN_FIELD_VALUE=AdminsOVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN=true
Dernière modification le 6 octobre 2026
Cette page vous a-t-elle été utile ?
Assistant
Responses are generated using AI and may contain mistakes.