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 samlAl 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'.
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 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
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
Ruta a un archivo que contiene un certificado público, utilizado para el endpoint de metadatos.
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).
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 identidadLa versión actual de Overleaf CE incluye un endpoint para obtener los metadatos del proveedor de servicios: http://my-overleaf-instance.com/saml/metaEl 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.
Ejemplo de archivo variables.env (mínimo)
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=
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:
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)
En la página del proveedor
Variable de entorno
SAML Endpoint
OVERLEAF_SAML_ENTRYPOINT y OVERLEAF_SAML_LOGOUT_URL
Audience
OVERLEAF_SAML_ISSUER
Download signing certificate (un archivo)
OVERLEAF_SAML_IDP_CERT, consulta el paso siguiente
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:
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.
Archivo variables.env probado para 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
Última modificación el 6 de octubre de 2026
¿Esta página le ayudó?
Assistant
Responses are generated using AI and may contain mistakes.