Qué es LDAP
LDAP es un protocolo de autenticación utilizado para la verificación de identidad externa. Overleaf Server Pro ofrece un formulario de inicio de sesión LDAP dedicado en la interfaz web, separado del método de autenticación estándar. Cuando un usuario envía su nombre de usuario y contraseña de LDAP, el backend de Overleaf verifica las credenciales contra el servidor LDAP configurado, por ejemploldap://ldap:10389.

Un ejemplo de LDAP en Server Pro
Configuración
Internamente, el LDAP de Overleaf utiliza la biblioteca passport-ldapauth. La mayoría de estas opciones de configuración se pasan al objeto de configuraciónserver, que se usa para configurar passport-ldapauth. Si tienes problemas al configurar LDAP, vale la pena leer el README de passport-ldapauth para hacerte una idea de la configuración que espera.
La variable de entorno EXTERNAL_AUTH es necesaria para habilitar el módulo de autenticación LDAP. Esta variable de entorno especifica qué métodos de autenticación externa se activan. El valor de esta variable es una lista. Si la lista incluye ldap, se activará la autenticación LDAP.
Por ejemplo: EXTERNAL_AUTH=ldap saml
A diferencia de Overleaf CEP, en nuestra edición ayaka-notes limitamos la autenticación LDAP a un método de autenticación puro, disponible en http://your-overleaf.com/ldap/login.
Al usar los métodos de autenticación LDAP, cuando un usuario introduce un username y una password en el formulario de inicio de sesión, se intenta lo siguiente:
- Se busca un usuario LDAP en el directorio LDAP usando el filtro definido por
OVERLEAF_LDAP_SEARCH_FILTERy se autentica. - Si la autenticación tiene éxito, se busca en la base de datos de usuarios de Overleaf un usuario cuya dirección de correo principal coincida con la dirección de correo del usuario LDAP autenticado:
- Si se encuentra un usuario coincidente, se elimina el campo
hashedPasswordde este usuario (si existe). Esto garantiza que, en el futuro, el usuario solo pueda iniciar sesión mediante autenticación LDAP. - Si no se encuentra ningún usuario coincidente, se crea un nuevo usuario de Overleaf con el correo, el nombre y los apellidos obtenidos del servidor LDAP.
- Si se encuentra un usuario coincidente, se elimina el campo
Variables de entorno
OVERLEAF_LDAP_URL(obligatoria)- URL del servidor LDAP.
- Ejemplo:
ldaps://ldap.example.com:636(LDAP sobre SSL) - Ejemplo:
ldap://ldap.example.com:389(sin cifrar o STARTTLS, si está configurado).
- Ejemplo:
- URL del servidor LDAP.
OVERLEAF_LDAP_IDENTITY_SERVICE_NAME- Nombre visible del servicio de identidad LDAP, usado en la página de inicio de sesión.
- Por defecto,
Log in with LDAP Provider.
OVERLEAF_LDAP_EMAIL_ATT- El atributo de correo devuelto por el servidor LDAP; por defecto
mail. Cada usuario LDAP debe tener al menos una dirección de correo. Si se proporcionan varias direcciones, solo se usará la primera.
- El atributo de correo devuelto por el servidor LDAP; por defecto
OVERLEAF_LDAP_FIRST_NAME_ATT- El nombre de la propiedad que contiene el nombre del usuario que se usa en la aplicación, normalmente
givenName.
- El nombre de la propiedad que contiene el nombre del usuario que se usa en la aplicación, normalmente
OVERLEAF_LDAP_LAST_NAME_ATT- El nombre de la propiedad que contiene el apellido del usuario que se usa en la aplicación, normalmente
sn.
- El nombre de la propiedad que contiene el apellido del usuario que se usa en la aplicación, normalmente
OVERLEAF_LDAP_NAME_ATT- El nombre de la propiedad que contiene el nombre completo del usuario, normalmente
cn. Si alguna de las dos variables anteriores no está definida, el nombre y/o el apellido del usuario se extraen de esta variable. En caso contrario, no se usa.
- El nombre de la propiedad que contiene el nombre completo del usuario, normalmente
OVERLEAF_LDAP_PLACEHOLDER- El texto de marcador de posición del formulario de inicio de sesión; por defecto
Username.
- El texto de marcador de posición del formulario de inicio de sesión; por defecto
OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN- Si se establece en
true, actualiza los camposfirst_nameylast_namedel usuario LDAP al iniciar sesión y desactiva el formulario de datos del usuario en la página/user/settingspara los usuarios LDAP. En caso contrario, los datos solo se obtendrán en el primer inicio de sesión.
- Si se establece en
OVERLEAF_LDAP_BIND_DN- El nombre distintivo del usuario LDAP que debe usarse para la conexión LDAP (este usuario debe poder buscar/listar cuentas en el servidor LDAP), p. ej.,
cn=ldap_reader,dc=example,dc=com. Si no se define, se usa un enlace (bind) anónimo.
- El nombre distintivo del usuario LDAP que debe usarse para la conexión LDAP (este usuario debe poder buscar/listar cuentas en el servidor LDAP), p. ej.,
OVERLEAF_LDAP_BIND_CREDENTIALS- Contraseña de
OVERLEAF_LDAP_BIND_DN.
- Contraseña de
OVERLEAF_LDAP_BIND_PROPERTY- Propiedad del usuario con la que se realiza el bind contra el cliente; por defecto
dn.
- Propiedad del usuario con la que se realiza el bind contra el cliente; por defecto
OVERLEAF_LDAP_SEARCH_BASE(obligatoria)- El DN base a partir del cual buscar usuarios. P. ej.,
ou=people,dc=example,dc=com.
- El DN base a partir del cual buscar usuarios. P. ej.,
OVERLEAF_LDAP_SEARCH_FILTER- Filtro de búsqueda LDAP con el que encontrar un usuario. Usa el literal ‘{{username}}’ para que el nombre de usuario indicado se interpole en la búsqueda LDAP.
- Ejemplo:
(|(uid={{username}})(mail={{username}}))(el usuario puede iniciar sesión con su correo o con su nombre de inicio de sesión). - Ejemplo:
(sAMAccountName={{username}})(Active Directory).
- Ejemplo:
- Filtro de búsqueda LDAP con el que encontrar un usuario. Usa el literal ‘{{username}}’ para que el nombre de usuario indicado se interpole en la búsqueda LDAP.
OVERLEAF_LDAP_SEARCH_SCOPE- El ámbito de la búsqueda puede ser
base,oneosub(por defecto).
- El ámbito de la búsqueda puede ser
OVERLEAF_LDAP_SEARCH_ATTRIBUTES- Array JSON de atributos que se obtienen del servidor LDAP, p. ej.,
["uid", "mail", "givenName", "sn"]. Por defecto se obtienen todos los atributos.
- Array JSON de atributos que se obtienen del servidor LDAP, p. ej.,
OVERLEAF_LDAP_STARTTLS- Si es
true, se usa LDAP sobre TLS.
- Si es
OVERLEAF_LDAP_TLS_OPTS_CA_PATH- Ruta al archivo que contiene el certificado de la CA usado para verificar el certificado SSL/TLS del servidor LDAP. Si hay varios certificados, puede ser un array JSON de rutas a los certificados. Los archivos deben ser accesibles para el contenedor Docker.
- Ejemplo (un certificado):
/var/lib/overleaf/certs/ldap_ca_cert.pem - Ejemplo (varios certificados):
["/var/lib/overleaf/certs/ldap_ca_cert1.pem", "/var/lib/overleaf/certs/ldap_ca_cert2.pem"]
- Ejemplo (un certificado):
- Ruta al archivo que contiene el certificado de la CA usado para verificar el certificado SSL/TLS del servidor LDAP. Si hay varios certificados, puede ser un array JSON de rutas a los certificados. Los archivos deben ser accesibles para el contenedor Docker.
OVERLEAF_LDAP_TLS_OPTS_REJECT_UNAUTH- Si es
true, el certificado del servidor se verifica contra la lista de CA proporcionadas.
- Si es
OVERLEAF_LDAP_CACHE- Si es
true, se almacenarán en caché hasta 100 credenciales a la vez durante 5 minutos.
- Si es
OVERLEAF_LDAP_TIMEOUT- Cuánto tiempo debe dejar el cliente que duren las operaciones antes de agotar el tiempo de espera, en ms (por defecto: Infinity).
OVERLEAF_LDAP_CONNECT_TIMEOUT- Cuánto tiempo debe esperar el cliente antes de agotar el tiempo de espera en las conexiones TCP, en ms (por defecto: el valor predeterminado del sistema operativo).
OVERLEAF_LDAP_IS_ADMIN_ATTyOVERLEAF_LDAP_IS_ADMIN_ATT_VALUE- Cuando ambas variables de entorno están definidas, el proceso de inicio de sesión establece
user.isAdmin = truesi el perfil LDAP contiene el atributo especificado porOVERLEAF_LDAP_IS_ADMIN_ATTy su valor coincide conOVERLEAF_LDAP_IS_ADMIN_ATT_VALUEo es un array que contieneOVERLEAF_LDAP_IS_ADMIN_ATT_VALUE; en caso contrario,user.isAdminse establece enfalse. Si alguna de estas variables no está definida, el estado de administrador solo se establece entruedurante la creación del usuario administrador en Launchpad.
- Cuando ambas variables de entorno están definidas, el proceso de inicio de sesión establece
OVERLEAF_LDAP_CONTACTS_FILTER- El filtro usado para buscar en el servidor LDAP los usuarios que se cargarán en los contactos. El marcador ‘{{userProperty}}’ dentro del filtro se sustituye por el valor de la propiedad especificada por
OVERLEAF_LDAP_CONTACTS_PROPERTYdel usuario LDAP que inicia la búsqueda. Si no se define, no se cargan usuarios del servidor LDAP en los contactos.
- El filtro usado para buscar en el servidor LDAP los usuarios que se cargarán en los contactos. El marcador ‘{{userProperty}}’ dentro del filtro se sustituye por el valor de la propiedad especificada por
OVERLEAF_LDAP_CONTACTS_SEARCH_BASE- Especifica el DN base desde el que empezar a buscar los contactos. Por defecto,
OVERLEAF_LDAP_SEARCH_BASE.
- Especifica el DN base desde el que empezar a buscar los contactos. Por defecto,
OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE- El ámbito de la búsqueda puede ser
base,oneosub(por defecto).
- El ámbito de la búsqueda puede ser
OVERLEAF_LDAP_CONTACTS_PROPERTY- Especifica la propiedad del objeto de usuario que sustituirá al marcador ‘{{userProperty}}’ en
OVERLEAF_LDAP_CONTACTS_FILTER.
- Especifica la propiedad del objeto de usuario que sustituirá al marcador ‘{{userProperty}}’ en
OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE- Especifica el valor de
OVERLEAF_LDAP_CONTACTS_PROPERTYsi la búsqueda la inicia un usuario que no es LDAP. Si esta variable no está definida, el filtro resultante no coincidirá con nada. El valor*puede usarse como comodín.
- Especifica el valor de
Ejemplo
Ejemplo
gid de UNIX. Los usuarios que no son LDAP tendrán en sus contactos a todos los usuarios LDAP con gid=1000 de UNIX.Archivo variables.env de ejemplo
Archivo variables.env de ejemplo
Paso a paso: goauthentik
Esta guía describe una configuración probada con goauthentik. Los ejemplos usan el Base DNdc=example,dc=com; sustitúyelo por el tuyo.
Crear una cuenta de enlace (bind)
ldapservice, y haz clic en Create:
Authentik: crear la cuenta de enlace
OVERLEAF_LDAP_BIND_CREDENTIALS:
Authentik: establecer la contraseña de la cuenta de enlace (instancia de prueba)
19 en …/#/identity/users/19. Lo necesitarás en el paso 3.Crear el proveedor y la aplicación
overleaf-ldap, y haz clic en Next:
Authentik: nombre y slug de la aplicación

Authentik: elegir el proveedor LDAP

Authentik: modo de enlace y de búsqueda del proveedor LDAP
default-authentication-flow y Base DN en tu Base DN, por ejemplo dc=example,dc=com:
Authentik: flujo de enlace y Base DN del proveedor LDAP
Permitir que la cuenta de enlace busque en el directorio
ak-managed-role--user-<number>; después activa Search full LDAP directory:
Authentik: conceder a la cuenta de enlace el permiso de búsqueda (instancia de prueba)

Authentik: permisos de un proveedor LDAP (instancia de prueba)
Ejecutar el outpost LDAP

Authentik: un outpost LDAP en ejecución (instancia de prueba)
Rellenar los DN

Authentik: vista general de un proveedor LDAP (instancia de prueba)
- Bind DN muestra la cuenta con la que has iniciado sesión. Usa en su lugar la cuenta de enlace del paso 1:
cn=ldapservice,ou=users,<Base DN>. - Search base muestra el Base DN. Usa
ou=users,<Base DN>.
Comprobar la búsqueda
dn::dn:, normalmente falta el permiso del paso 3.Asignar los administradores (opcional)
memberOf, como DN bajo ou=groups. Para que los miembros del grupo Admins de Authentik sean administradores de Overleaf:Archivo variables.env probado para goauthentik
Archivo variables.env probado para goauthentik

