Qu’est-ce que LDAP ?
LDAP est un protocole d’authentification utilisé pour la vérification d’identité externe. Overleaf Server Pro fournit dans l’interface web un formulaire de connexion LDAP dédié, distinct de la méthode d’authentification standard. Lorsqu’un utilisateur soumet son nom d’utilisateur et son mot de passe LDAP, le backend d’Overleaf vérifie les identifiants auprès du serveur LDAP configuré, par exempleldap://ldap:10389.

Un exemple de LDAP dans Server Pro
Configuration
En interne, le LDAP d’Overleaf utilise la bibliothèque passport-ldapauth. La plupart de ces options de configuration sont transmises à l’objet de configurationserver, qui sert à configurer passport-ldapauth. Si vous rencontrez des difficultés pour configurer LDAP, il est utile de lire le README de passport-ldapauth pour comprendre la configuration attendue.
La variable d’environnement EXTERNAL_AUTH est requise pour activer le module d’authentification LDAP. Elle indique quelles méthodes d’authentification externes sont activées. Sa valeur est une liste. Si la liste contient ldap, l’authentification LDAP est activée.
Par exemple : EXTERNAL_AUTH=ldap saml
Contrairement à Overleaf CEP, dans notre édition ayaka-notes, l’authentification LDAP est limitée à une pure méthode d’authentification, disponible à l’adresse http://your-overleaf.com/ldap/login.
Lorsque la méthode d’authentification LDAP est utilisée et qu’un utilisateur saisit un username et un password dans le formulaire de connexion, le processus suivant est tenté :
- Un utilisateur LDAP est recherché dans l’annuaire LDAP à l’aide du filtre défini par
OVERLEAF_LDAP_SEARCH_FILTER, puis authentifié. - Si l’authentification réussit, la base de données des utilisateurs d’Overleaf est consultée pour trouver un utilisateur dont l’adresse e-mail principale correspond à celle de l’utilisateur LDAP authentifié :
- Si un utilisateur correspondant est trouvé, le champ
hashedPasswordde cet utilisateur est supprimé (s’il existe). Cela garantit que l’utilisateur ne pourra plus se connecter qu’au moyen de l’authentification LDAP. - Si aucun utilisateur correspondant n’est trouvé, un nouvel utilisateur Overleaf est créé à partir de l’e-mail, du prénom et du nom récupérés depuis le serveur LDAP.
- Si un utilisateur correspondant est trouvé, le champ
Variables d’environnement
OVERLEAF_LDAP_URL(obligatoire)- URL du serveur LDAP.
- Exemple :
ldaps://ldap.example.com:636(LDAP sur SSL) - Exemple :
ldap://ldap.example.com:389(non chiffré ou STARTTLS, si configuré).
- Exemple :
- URL du serveur LDAP.
OVERLEAF_LDAP_IDENTITY_SERVICE_NAME- Nom d’affichage du service d’identité LDAP, utilisé sur la page de connexion.
- Valeur par défaut :
Log in with LDAP Provider.
OVERLEAF_LDAP_EMAIL_ATT- L’attribut e-mail renvoyé par le serveur LDAP, par défaut
mail. Chaque utilisateur LDAP doit avoir au moins une adresse e-mail. Si plusieurs adresses sont fournies, seule la première est utilisée.
- L’attribut e-mail renvoyé par le serveur LDAP, par défaut
OVERLEAF_LDAP_FIRST_NAME_ATT- Le nom de la propriété contenant le prénom de l’utilisateur utilisé dans l’application, généralement
givenName.
- Le nom de la propriété contenant le prénom de l’utilisateur utilisé dans l’application, généralement
OVERLEAF_LDAP_LAST_NAME_ATT- Le nom de la propriété contenant le nom de famille de l’utilisateur utilisé dans l’application, généralement
sn.
- Le nom de la propriété contenant le nom de famille de l’utilisateur utilisé dans l’application, généralement
OVERLEAF_LDAP_NAME_ATT- Le nom de la propriété contenant le nom complet de l’utilisateur, généralement
cn. Si l’une des deux variables précédentes n’est pas définie, le prénom et/ou le nom de l’utilisateur sont extraits de cette variable. Sinon, elle n’est pas utilisée.
- Le nom de la propriété contenant le nom complet de l’utilisateur, généralement
OVERLEAF_LDAP_PLACEHOLDER- Le texte indicatif du formulaire de connexion, par défaut
Username.
- Le texte indicatif du formulaire de connexion, par défaut
OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN- Si la valeur est
true, les champsfirst_nameetlast_namede l’utilisateur LDAP sont mis à jour à la connexion, et le formulaire des informations utilisateur de la page/user/settingsest désactivé pour les utilisateurs LDAP. Sinon, les informations ne sont récupérées qu’à la première connexion.
- Si la valeur est
OVERLEAF_LDAP_BIND_DN- Le nom distinctif (DN) de l’utilisateur LDAP à utiliser pour la connexion LDAP (cet utilisateur doit pouvoir rechercher/lister les comptes sur le serveur LDAP), par exemple
cn=ldap_reader,dc=example,dc=com. S’il n’est pas défini, une liaison anonyme est utilisée.
- Le nom distinctif (DN) de l’utilisateur LDAP à utiliser pour la connexion LDAP (cet utilisateur doit pouvoir rechercher/lister les comptes sur le serveur LDAP), par exemple
OVERLEAF_LDAP_BIND_CREDENTIALS- Mot de passe de
OVERLEAF_LDAP_BIND_DN.
- Mot de passe de
OVERLEAF_LDAP_BIND_PROPERTY- Propriété de l’utilisateur utilisée pour la liaison avec le client, par défaut
dn.
- Propriété de l’utilisateur utilisée pour la liaison avec le client, par défaut
OVERLEAF_LDAP_SEARCH_BASE(obligatoire)- Le DN de base à partir duquel rechercher les utilisateurs. Par exemple,
ou=people,dc=example,dc=com.
- Le DN de base à partir duquel rechercher les utilisateurs. Par exemple,
OVERLEAF_LDAP_SEARCH_FILTER- Filtre de recherche LDAP permettant de trouver un utilisateur. Utilisez le littéral ‘{{username}}’ pour que le nom d’utilisateur fourni soit interpolé dans la recherche LDAP.
- Exemple :
(|(uid={{username}})(mail={{username}}))(l’utilisateur peut se connecter avec son e-mail ou son identifiant). - Exemple :
(sAMAccountName={{username}})(Active Directory).
- Exemple :
- Filtre de recherche LDAP permettant de trouver un utilisateur. Utilisez le littéral ‘{{username}}’ pour que le nom d’utilisateur fourni soit interpolé dans la recherche LDAP.
OVERLEAF_LDAP_SEARCH_SCOPE- La portée de la recherche peut être
base,oneousub(par défaut).
- La portée de la recherche peut être
OVERLEAF_LDAP_SEARCH_ATTRIBUTES- Tableau JSON des attributs à récupérer depuis le serveur LDAP, par exemple
["uid", "mail", "givenName", "sn"]. Par défaut, tous les attributs sont récupérés.
- Tableau JSON des attributs à récupérer depuis le serveur LDAP, par exemple
OVERLEAF_LDAP_STARTTLS- Si la valeur est
true, LDAP sur TLS est utilisé.
- Si la valeur est
OVERLEAF_LDAP_TLS_OPTS_CA_PATH- Chemin du fichier contenant le certificat de l’autorité de certification (CA) utilisé pour vérifier le certificat SSL/TLS du serveur LDAP. S’il y a plusieurs certificats, il peut s’agir d’un tableau JSON de chemins vers les certificats. Les fichiers doivent être accessibles au conteneur Docker.
- Exemple (un certificat) :
/var/lib/overleaf/certs/ldap_ca_cert.pem - Exemple (plusieurs certificats) :
["/var/lib/overleaf/certs/ldap_ca_cert1.pem", "/var/lib/overleaf/certs/ldap_ca_cert2.pem"]
- Exemple (un certificat) :
- Chemin du fichier contenant le certificat de l’autorité de certification (CA) utilisé pour vérifier le certificat SSL/TLS du serveur LDAP. S’il y a plusieurs certificats, il peut s’agir d’un tableau JSON de chemins vers les certificats. Les fichiers doivent être accessibles au conteneur Docker.
OVERLEAF_LDAP_TLS_OPTS_REJECT_UNAUTH- Si la valeur est
true, le certificat du serveur est vérifié par rapport à la liste des CA fournies.
- Si la valeur est
OVERLEAF_LDAP_CACHE- Si la valeur est
true, jusqu’à 100 identifiants à la fois seront mis en cache pendant 5 minutes.
- Si la valeur est
OVERLEAF_LDAP_TIMEOUT- Durée pendant laquelle le client laisse les opérations s’exécuter avant expiration, en ms (par défaut : Infinity).
OVERLEAF_LDAP_CONNECT_TIMEOUT- Durée pendant laquelle le client attend avant l’expiration des connexions TCP, en ms (par défaut : valeur par défaut du système d’exploitation).
OVERLEAF_LDAP_IS_ADMIN_ATTetOVERLEAF_LDAP_IS_ADMIN_ATT_VALUE- Lorsque ces deux variables d’environnement sont définies, le processus de connexion définit
user.isAdmin = truesi le profil LDAP contient l’attribut spécifié parOVERLEAF_LDAP_IS_ADMIN_ATTet que sa valeur correspond àOVERLEAF_LDAP_IS_ADMIN_ATT_VALUEou est un tableau contenantOVERLEAF_LDAP_IS_ADMIN_ATT_VALUE; sinon,user.isAdminest défini surfalse. Si l’une de ces variables n’est pas définie, le statut d’administrateur n’est défini surtrueque lors de la création de l’utilisateur administrateur dans Launchpad.
- Lorsque ces deux variables d’environnement sont définies, le processus de connexion définit
OVERLEAF_LDAP_CONTACTS_FILTER- Le filtre utilisé pour rechercher, sur le serveur LDAP, les utilisateurs à charger dans les contacts. Le marqueur ‘{{userProperty}}’ dans le filtre est remplacé par la valeur de la propriété spécifiée par
OVERLEAF_LDAP_CONTACTS_PROPERTYde l’utilisateur LDAP qui lance la recherche. S’il n’est pas défini, aucun utilisateur n’est récupéré depuis le serveur LDAP dans les contacts.
- Le filtre utilisé pour rechercher, sur le serveur LDAP, les utilisateurs à charger dans les contacts. Le marqueur ‘{{userProperty}}’ dans le filtre est remplacé par la valeur de la propriété spécifiée par
OVERLEAF_LDAP_CONTACTS_SEARCH_BASE- Indique le DN de base à partir duquel commencer la recherche des contacts. Par défaut :
OVERLEAF_LDAP_SEARCH_BASE.
- Indique le DN de base à partir duquel commencer la recherche des contacts. Par défaut :
OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE- La portée de la recherche peut être
base,oneousub(par défaut).
- La portée de la recherche peut être
OVERLEAF_LDAP_CONTACTS_PROPERTY- Indique la propriété de l’objet utilisateur qui remplacera le marqueur ‘{{userProperty}}’ dans
OVERLEAF_LDAP_CONTACTS_FILTER.
- Indique la propriété de l’objet utilisateur qui remplacera le marqueur ‘{{userProperty}}’ dans
OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE- Indique la valeur de
OVERLEAF_LDAP_CONTACTS_PROPERTYsi la recherche est lancée par un utilisateur non LDAP. Si cette variable n’est pas définie, le filtre résultant ne correspondra à rien. La valeur*peut être utilisée comme caractère générique.
- Indique la valeur de
Exemple
Exemple
gid UNIX. Les utilisateurs non LDAP auront dans leurs contacts tous les utilisateurs LDAP ayant le gid=1000 UNIX.Exemple de fichier variables.env
Exemple de fichier variables.env
Guide pas à pas avec goauthentik
Ce guide décrit une configuration testée avec goauthentik. Les exemples utilisent le Base DNdc=example,dc=com ; remplacez-le par le vôtre.
Créer un compte de liaison (bind)
ldapservice, puis cliquez sur Create :
Authentik : créer le compte de liaison
OVERLEAF_LDAP_BIND_CREDENTIALS :
Authentik : définir le mot de passe du compte de liaison (instance de test)
19 dans …/#/identity/users/19. Vous en aurez besoin à l’étape 3.Créer le fournisseur et l'application
overleaf-ldap, puis cliquez sur Next :
Authentik : nom et slug de l'application

Authentik : choisir le fournisseur LDAP

Authentik : modes de liaison et de recherche du fournisseur LDAP
default-authentication-flow et Base DN sur votre Base DN, par exemple dc=example,dc=com :
Authentik : flux de liaison et Base DN du fournisseur LDAP
Autoriser le compte de liaison à parcourir l'annuaire
ak-managed-role--user-<number>, puis activez Search full LDAP directory :
Authentik : accorder l'autorisation de recherche au compte de liaison (instance de test)

Authentik : autorisations d'un fournisseur LDAP (instance de test)
Lancer l'avant-poste LDAP

Authentik : un avant-poste LDAP en fonctionnement (instance de test)
Renseigner les DN

Authentik : vue d'ensemble d'un fournisseur LDAP (instance de test)
- Bind DN affiche le compte avec lequel vous êtes connecté. Utilisez plutôt le compte de liaison de l’étape 1 :
cn=ldapservice,ou=users,<Base DN>. - Search base affiche le Base DN. Utilisez
ou=users,<Base DN>.
Vérifier la recherche
dn: :dn: signifie généralement que l’autorisation de l’étape 3 est manquante.Associer les administrateurs (facultatif)
memberOf, sous forme de DN sous ou=groups. Pour que les membres du groupe Authentik Admins deviennent administrateurs d’Overleaf :Fichier variables.env testé pour goauthentik
Fichier variables.env testé pour goauthentik

