Skip to main content
Esta funcionalidad ha sido desarrollada por yu-i-i/overleaf-cep. Aquí ofrecemos documentación para tu configuración.

Configuración

Internamente, el módulo SAML de Overleaf utiliza la biblioteca passport-saml; la mayoría de las siguientes opciones de configuración se transmiten a passport-saml. Si tienes problemas para configurar SAML, vale la pena leer el README de passport-saml 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 SAML. Esta variable de entorno especifica qué métodos de autenticación externa se activan. Su valor es una lista. Si la lista incluye saml, se activará la autenticación SAML. Por ejemplo: EXTERNAL_AUTH=ldap saml Al utilizar el método de autenticación SAML, el usuario es redirigido al sitio de autenticación del proveedor de identidad (IdP). Si el IdP autentica correctamente al usuario, se busca en la base de datos de usuarios de Overleaf un registro que contenga un campo samlIdentifiers con la siguiente estructura:
El externalUserId debe coincidir con el valor de la propiedad especificada por userIdAttribute en el perfil de usuario devuelto por el servidor del IdP. Si no se encuentra ningún registro coincidente, se busca en la base de datos un usuario cuya dirección de correo electrónico principal coincida con el correo del perfil de usuario del IdP:
  • Si se encuentra dicho usuario, se elimina el campo hashedPassword para deshabilitar la autenticación local y se añade el campo samlIdentifiers.
  • Si no se encuentra ningún usuario coincidente, se crea un nuevo usuario con la dirección de correo electrónico y los samlIdentifiers del perfil del IdP.
Nota: Actualmente solo se admite un IdP SAML. El campo providerId de samlIdentifiers está fijado en '1'.

Variables de entorno

  • OVERLEAF_SAML_IDENTITY_SERVICE_NAME
    • Nombre visible del servicio de identidad, que se usa en la página de inicio de sesión (por defecto: Log in with SAML IdP).
  • OVERLEAF_SAML_USER_ID_FIELD
    • Overleaf usará el valor de este atributo como ID de usuario externo; por defecto, nameID.
  • OVERLEAF_SAML_EMAIL_FIELD
    • Nombre del campo de correo electrónico en el perfil de usuario; por defecto, nameID.
  • OVERLEAF_SAML_FIRST_NAME_FIELD
    • Nombre del campo firstName en el perfil de usuario; por defecto, givenName.
  • OVERLEAF_SAML_LAST_NAME_FIELD
    • Nombre del campo lastName en el perfil de usuario; por defecto, lastName
  • OVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN
    • Si se establece en true, actualiza los campos first_name y last_name del usuario al iniciar sesión y desactiva el formulario de datos del usuario en la página /user/settings.
  • OVERLEAF_SAML_ENTRYPOINT (obligatoria)
    • URL del punto de entrada del servicio de identidad SAML.
      • Ejemplo: https://idp.example.com/simplesaml/saml2/idp/SSOService.php
      • Ejemplo de Azure: https://login.microsoftonline.com/8b26b46a-6dd3-45c7-a104-f883f4db1f6b/saml2
  • OVERLEAF_SAML_ISSUER (obligatoria)
    • El nombre del emisor (Issuer).
  • OVERLEAF_SAML_AUDIENCE
    • Audience esperado en la respuesta SAML; por defecto, el valor de OVERLEAF_SAML_ISSUER.
  • OVERLEAF_SAML_IDP_CERT (obligatoria)
    • Ruta a un archivo que contiene el certificado público del proveedor de identidad, utilizado para validar las firmas de las respuestas SAML entrantes. Si el proveedor de identidad tiene varios certificados de firma válidos, puede ser un array JSON de rutas a los certificados.
      • Ejemplo (un certificado): /var/lib/overleaf/certs/idp_cert.pem
      • Ejemplo (varios certificados): ["var/lib/overleaf/certs/idp_cert.pem", "/var/lib/overleaf/certs/idp_cert_old.pem"]
  • OVERLEAF_SAML_PUBLIC_CERT
    • Ruta a un archivo que contiene el certificado público de firma que se incrusta en las solicitudes de autenticación para que el IdP pueda validar las firmas de la solicitud SAML entrante. Es obligatorio al configurar el endpoint de metadatos cuando la estrategia se configura con OVERLEAF_SAML_PRIVATE_KEY. Se puede proporcionar un array JSON de rutas a certificados para permitir la rotación de certificados. Al proporcionar un array de certificados, la primera entrada del array debe corresponder a la OVERLEAF_SAML_PRIVATE_KEY actual. Las entradas adicionales del array pueden usarse para publicar en los IdP los próximos certificados antes de cambiar OVERLEAF_SAML_PRIVATE_KEY.
  • OVERLEAF_SAML_PRIVATE_KEY
    • Ruta a un archivo que contiene una clave privada en formato PEM correspondiente a OVERLEAF_SAML_PUBLIC_CERT, utilizada para firmar las solicitudes de autenticación enviadas por passport-saml.
  • OVERLEAF_SAML_DECRYPTION_CERT
  • OVERLEAF_SAML_DECRYPTION_PVK
    • Ruta a un archivo que contiene la clave privada correspondiente a OVERLEAF_SAML_DECRYPTION_CERT, que se utilizará para intentar descifrar las aserciones cifradas que se reciban.
  • OVERLEAF_SAML_SIGNATURE_ALGORITHM
    • Permite establecer opcionalmente el algoritmo de firma para firmar las solicitudes; los valores válidos son ‘sha1’ (predeterminado), ‘sha256’ (preferido) y ‘sha512’ (el más seguro; comprueba si tu IdP lo admite).
  • OVERLEAF_SAML_ADDITIONAL_PARAMS
    • Diccionario JSON de parámetros de consulta adicionales que se añadirán a todas las solicitudes.
  • OVERLEAF_SAML_ADDITIONAL_AUTHORIZE_PARAMS
    • Diccionario JSON de parámetros de consulta adicionales que se añadirán a las solicitudes ‘authorize’.
      • Ejemplo: {"some_key": "some_value"}
  • OVERLEAF_SAML_IDENTIFIER_FORMAT
    • Formato del identificador de nombre que se solicitará al proveedor de identidad (por defecto: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress). Si usas urn:oasis:names:tc:SAML:2.0:nameid-format:persistent, asegúrate de que la variable de entorno OVERLEAF_SAML_EMAIL_FIELD esté definida. Si se requiere urn:oasis:names:tc:SAML:2.0:nameid-format:transient, también debes definir la variable de entorno OVERLEAF_SAML_USER_ID_FIELD, que puede establecerse, por ejemplo, en la dirección de correo electrónico del usuario.
  • OVERLEAF_SAML_ACCEPTED_CLOCK_SKEW_MS
    • Desfase de tiempo, en milisegundos, aceptable entre el cliente y el servidor al comprobar las marcas de tiempo de validez de las condiciones de aserción OnBefore y NotOnOrAfter. Si se establece en -1, se deshabilita por completo la comprobación de estas condiciones. El valor predeterminado es 0.
  • OVERLEAF_SAML_ATTRIBUTE_CONSUMING_SERVICE_INDEX
    • Atributo AttributeConsumingServiceIndex que se añade a AuthnRequest para indicar al IdP qué conjunto de atributos debe adjuntar a la respuesta (enlace).
  • OVERLEAF_SAML_AUTHN_CONTEXT
    • Array JSON de valores de formato de identificador de nombre para solicitar el contexto de autenticación. Por defecto: ["urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"].
  • OVERLEAF_SAML_FORCE_AUTHN
    • Si es true, la solicitud SAML inicial del proveedor de servicios especifica que el IdP debe forzar la reautenticación del usuario, incluso si tiene una sesión válida.
  • OVERLEAF_SAML_DISABLE_REQUESTED_AUTHN_CONTEXT
    • Si es true, no se solicita un contexto de autenticación específico. Por ejemplo, puedes establecerlo en true para permitir contextos adicionales, como inicios de sesión sin contraseña (urn:oasis:names:tc:SAML:2.0:ac:classes:X509). La compatibilidad con contextos adicionales depende de tu IdP.
  • OVERLEAF_SAML_AUTHN_REQUEST_BINDING
    • Si se establece en HTTP-POST, solicitará la autenticación al IdP mediante el binding HTTP POST; de lo contrario, se usa HTTP-Redirect por defecto.
  • OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO
    • Si es always, se validará InResponseTo en las respuestas SAML entrantes.
    • Si es never, no se validará InResponseTo (predeterminado).
    • Si es ifPresent, InResponseTo solo se validará si está presente en la respuesta SAML entrante.
  • OVERLEAF_SAML_WANT_ASSERTIONS_SIGNED y OVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED
    • Cuando se establecen en true (predeterminado), Overleaf espera que las aserciones SAML y, respectivamente, toda la respuesta de autenticación SAML estén firmadas por el IdP. Cuando ambas opciones son false, al menos las aserciones o la respuesta deben estar firmadas.
  • OVERLEAF_SAML_REQUEST_ID_EXPIRATION_PERIOD_MS
    • Define el tiempo de expiración tras el cual un ID de solicitud generado para una solicitud SAML dejará de ser válido si aparece en el campo InResponseTo de una respuesta SAML. Por defecto: 28800000 (8 horas).
  • OVERLEAF_SAML_LOGOUT_URL
    • Dirección base a la que se envían las solicitudes de cierre de sesión (por defecto: entryPoint).
      • Ejemplo: https://idp.example.com/simplesaml/saml2/idp/SingleLogoutService.php
  • OVERLEAF_SAML_ADDITIONAL_LOGOUT_PARAMS
    • Diccionario JSON de parámetros de consulta adicionales que se añadirán a las solicitudes ‘logout’.
  • OVERLEAF_SAML_IS_ADMIN_FIELD y OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE
    • Cuando ambas variables de entorno están definidas, el proceso de inicio de sesión establece user.isAdmin = true si el perfil devuelto por el IdP SAML contiene el atributo especificado en OVERLEAF_SAML_IS_ADMIN_FIELD y su valor coincide con OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE o es un array que contiene OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE; en caso contrario, user.isAdmin se establece en false. Si alguna de estas variables no está definida, el estado de administrador solo se establece en true durante la creación del usuario administrador en Launchpad.
Metadatos para el proveedor de identidad La versión actual de Overleaf CE incluye un endpoint para obtener los metadatos del proveedor de servicios: http://my-overleaf-instance.com/saml/meta El proveedor de identidad deberá configurarse para reconocer el servidor de Overleaf como “proveedor de servicios” (Service Provider). Consulta la documentación de tu servidor SAML para obtener instrucciones sobre cómo hacerlo. A continuación se muestra un ejemplo de metadatos adecuados del proveedor de servicios:
Anota los certificados, AssertionConsumerService.Location, SingleLogoutService.Location y EntityDescriptor.entityID y configúralos según corresponda en la configuración de tu IdP, o envía el archivo de metadatos al administrador del IdP.

Paso a paso: goauthentik

Esta guía describe una configuración probada con goauthentik. Sustituye https://overleaf.example.com por tu OVERLEAF_SITE_URL y https://authentik.example.com por la dirección de tu Authentik.
1

Crear el proveedor y la aplicación

En Authentik, abre Applications > Applications y haz clic en New Application. El asistente crea la aplicación y su proveedor a la vez.1. Asigna a la aplicación un nombre y un slug, por ejemplo overleaf, y haz clic en Next:

Authentik: nombre y slug de la aplicación

2. Elige SAML Provider y haz clic en Next:

Authentik: elegir el proveedor SAML

3. Rellena los datos del proveedor:
  • Authorization Flow: default-provider-authorization-implicit-consent
  • ACS URL: https://overleaf.example.com/saml/login/callback
  • Audience: un nombre para Overleaf, por ejemplo overleaf. Overleaf lo envía como OVERLEAF_SAML_ISSUER.

Authentik: el proveedor SAML de la aplicación

4. Abre Advanced protocol settings y establece:
  • Signing Certificate: un certificado, por ejemplo authentik Self-signed Certificate
  • Sign assertions y Sign responses: ambos activados
  • Service Provider Binding: Post

Authentik: firma y binding de un proveedor probado (instancia de prueba)

5. Haz clic en Next hasta llegar a la última página y envía la aplicación.
2

Copiar los valores de la página del proveedor

Vuelve a abrir el proveedor. Todo lo que Overleaf necesita está en su vista general:

Authentik: vista general de un proveedor SAML (instancia de prueba)

EntityID/Issuer en SAML Configuration es el nombre del propio Authentik. No lo pongas en OVERLEAF_SAML_ISSUER; usa el valor de Audience.
3

Instalar el certificado de firma

Haz clic en Download en Download signing certificate y guarda el archivo como data/overleaf/certs/idp_cert.pem en tu directorio del Toolkit. El contenedor lo ve como /var/lib/overleaf/certs/idp_cert.pem:
4

Asignar los atributos

Authentik envía sus atributos con estos nombres:
Los grupos llegan como http://schemas.xmlsoap.org/claims/Group, en forma de lista. Para que los miembros del grupo Admins de Authentik sean administradores de Overleaf:
El indicador de administrador se actualiza en cada inicio de sesión SAML. Con un campo o un valor incorrecto, todos los administradores que inicien sesión mediante SAML pierden los derechos de administrador. Prueba primero la asignación con una segunda cuenta de administrador.
variables.env
Última modificación el 6 de octubre de 2026