Skip to main content
El inicio de sesión con SAML lo gestiona el servicio web (el módulo authentication) dentro de cada pod de Ayakaleaf Pro. No tiene tareas en segundo plano ni un pod independiente. Configura el proveedor de identidad (IdP) como se indica en Autenticación SAML y, después, introduce los valores y el certificado del IdP en Kubernetes como se explica a continuación.

Dónde se ejecuta cada cosa

Configuración

1

Registra Overleaf en el IdP

La guía paso a paso de goauthentik muestra dónde se encuentran.
2

Guarda el certificado del IdP en el Secret overleaf-certs

El Toolkit lee el certificado de data/overleaf/certs/. En Kubernetes procede del Secret overleaf-certs, montado en /var/lib/overleaf/certs como se describe en Certificados y otros archivos:
Si el Secret ya existe, añade el archivo a él: elimínalo y vuelve a crearlo con todos los --from-file, o usa kubectl -n overleaf edit secret overleaf-certs.OVERLEAF_SAML_IDP_CERT admite una ruta, o una lista JSON de rutas durante una rotación de certificados. No admite el texto PEM en sí.
3

Añade los ajustes al ConfigMap

30-config.yaml (additions)
Todos los ajustes OVERLEAF_SAML_* se enumeran en Variables de entorno. Todos van en el ConfigMap: ninguno es un secreto en sí. Los archivos de clave (OVERLEAF_SAML_PRIVATE_KEY, OVERLEAF_SAML_DECRYPTION_PVK) van en overleaf-certs, y el ConfigMap contiene sus rutas.
Pon entre comillas "true", "false" y los valores JSON como OVERLEAF_SAML_AUTHN_CONTEXT: '["urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"]'. Un ajuste que no sea un booleano o un valor JSON válido hace que la estrategia SAML no se cargue, aunque el pod siga indicando que está listo; entonces, el inicio de sesión mediante SAML falla. Revisa web.log después de cada cambio; consulta las preguntas y respuestas más abajo.
4

Aplica y reinicia

El certificado y las claves del IdP se leen cuando web arranca, así que un certificado nuevo en overleaf-certs también requiere este reinicio.

Varias réplicas

El IdP devuelve al usuario a la URL de ACS con un POST entre sitios. Los navegadores no envían las cookies SameSite=Lax con él, por lo que la petición no lleva ni la cookie de sesión de Overleaf ni, en Chrome y Edge, la cookie de afinidad (sticky) del balanceador de carga, y puede llegar a cualquier réplica. Con los ajustes por defecto esto no importa: la réplica que la recibe crea la sesión en Redis y, a partir de ese momento, el balanceador de carga mantiene al usuario en ella.
Deja OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO sin definir (su valor por defecto es never) cuando ejecutes varias réplicas. Con always o ifPresent, cada réplica recuerda en su propia memoria las peticiones que envió al IdP, y una respuesta que llega a otra réplica se rechaza con “InResponseTo is not valid”: el usuario se queda en /saml/login/callback. En nuestra prueba con tres réplicas y always, 12 de los 19 casos de prueba de SAML fallaron de esta forma, mientras que todos se superaron con el valor por defecto. Con una réplica, los inicios de sesión SAML también se superan con always.

Probado en Kubernetes

Con goauthentik como IdP (binding HTTP-POST, aserciones y respuestas firmadas), en Kubernetes 1.37 con tres réplicas detrás de HAProxy, nuestras pruebas de extremo a extremo para SAML se superan (19 casos): el primer administrador creado desde el launchpad iniciando sesión mediante SAML, el inicio de sesión con el certificado del IdP de overleaf-certs, la creación de la cuenta y un nuevo inicio de sesión, la asignación de administrador por grupo y sin asignación, el nombre y el indicador de administrador actualizados en cada inicio de sesión, el cierre de sesión a través del IdP, las reglas de contraseña para cuentas SAML y las cuentas suspendidas. OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO se dejó con su valor por defecto.

Preguntas y respuestas

Respuesta: La estrategia SAML no se ha cargado. El pod llega igualmente a estar listo, así que revisa el log de web de cada pod:
Causas habituales: OVERLEAF_SAML_IDP_CERT apunta a un archivo que no está en overleaf-certs, un booleano que no es "true" ni "false", o JSON no válido. Si EXTERNAL_AUTH enumera varios métodos, un error así también desactiva los métodos posteriores a SAML (ldap, luego saml, luego oidc).
Respuesta: Ninguno de los dos, para el inicio y el cierre de sesión: el IdP y Overleaf solo intercambian mensajes a través del navegador del usuario. Solo si configuras el IdP con una URL de metadatos, este descarga ${OVERLEAF_SITE_URL}/saml/meta.
Última modificación el 2 de noviembre de 2026