Internamente, el módulo OIDC de Overleaf utiliza la biblioteca passport-openidconnect. Si tienes problemas para configurar OpenID Connect, vale la pena leer el README de passport-openidconnect 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 OIDC. Esta variable de entorno especifica qué métodos de autenticación externa se activan. Su valor es una lista. Si la lista incluye oidc, se activará la autenticación OIDC.Por ejemplo: EXTERNAL_AUTH=ldap oidcAl utilizar el método de autenticación OIDC, 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 thirdPartyIdentifiers con la siguiente estructura:
El externalUserId debe coincidir con el ID de usuario del perfil devuelto por el servidor del IdP (consulta la variable de entorno OVERLEAF_OIDC_USER_ID_FIELD), y providerId debe coincidir con el ID del proveedor OIDC (consulta OVERLEAF_OIDC_PROVIDER_ID).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 actualiza el campo thirdPartyIdentifiers.
Si no se encuentra ningún usuario coincidente y la creación de cuentas JIT no está deshabilitada, se crea un nuevo usuario con la dirección de correo electrónico y los thirdPartyIdentifiers del perfil del IdP.
En ambos casos, se dice que el usuario está “vinculado” al usuario OIDC externo. El usuario puede desvincularse del proveedor OIDC en la página /user/settings.
Encontrar los valores con el documento de descubrimiento
Todo proveedor de OpenID (OP) publica un documento de descubrimiento en <issuer>/.well-known/openid-configuration. Copia los valores de ahí en lugar de escribirlos a mano; basta un carácter incorrecto para que el inicio de sesión falle.
1
Encontrar la URL de descubrimiento
Tu OP la muestra en la página del cliente (proveedor) que creaste para Overleaf. En Authentik, abre Applications > Providers, selecciona el proveedor y busca OpenID Configuration URL y OpenID Configuration Issuer:
Authentik: la URL de descubrimiento y el emisor de un proveedor (instancia de prueba)
Overleaf llama a los endpoints de token y userinfo desde dentro de su contenedor, por lo que el OP debe ser accesible desde ahí, no solo desde tu navegador:
Copia issuer exactamente, incluida la barra final. Overleaf lo compara carácter por carácter con el emisor del token de ID; cualquier diferencia hace que todos los inicios de sesión OIDC fallen con:{"message":{"message":"ID token not issued by expected OpenID provider."}}En Authentik, el emisor pertenece a la aplicación (.../application/o/<application-slug>/). No es la dirección del servidor de Authentik, aunque las URL de authorize, token y userinfo son compartidas por todas las aplicaciones.
Los valores de las siguientes cinco variables obligatorias pueden obtenerse a través del endpoint .well-known/openid-configuration de tu proveedor de OpenID (OP); consulta la sección anterior.
OVERLEAF_OIDC_ISSUER(obligatoria)
OVERLEAF_OIDC_AUTHORIZATION_URL(obligatoria)
OVERLEAF_OIDC_TOKEN_URL(obligatoria)
OVERLEAF_OIDC_USER_INFO_URL(obligatoria)
OVERLEAF_OIDC_LOGOUT_URL(obligatoria)
Los valores de las siguientes dos variables obligatorias te los proporcionará el administrador de tu OP
OVERLEAF_OIDC_CLIENT_ID(obligatoria)
OVERLEAF_OIDC_CLIENT_SECRET(obligatoria)
OVERLEAF_OIDC_SCOPE
Valor predeterminado: openid profile email
OVERLEAF_OIDC_PROVIDER_ID
ID arbitrario del OP; por defecto, oidc.
OVERLEAF_OIDC_PROVIDER_NAME
El nombre del OP, que se usa en la sección Linked Accounts de la página /user/settings; por defecto, OIDC Provider.
OVERLEAF_OIDC_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 $OVERLEAF_OIDC_PROVIDER_NAME).
OVERLEAF_OIDC_PROVIDER_DESCRIPTION
Descripción del OP, que se usa en la sección Linked Accounts (por defecto: Log in with $OVERLEAF_OIDC_PROVIDER_NAME).
OVERLEAF_OIDC_PROVIDER_INFO_LINK
URL de Learn more en la descripción del OP; por defecto, la descripción no incluye ningún enlace Learn more.
OVERLEAF_OIDC_PROVIDER_HIDE_NOT_LINKED
No mostrar el OP en la página /user/settings si la cuenta del usuario no está vinculada con el OP; por defecto, false.
OVERLEAF_OIDC_USER_ID_FIELD
Overleaf usará el valor de este atributo como ID de usuario externo; por defecto, id. Otros valores razonables posibles son email y username (correspondiente al claim OIDC preferred_username).
OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS
Restringe la creación de cuentas Just-in-Time (JIT) para los usuarios que se autentican mediante OIDC. Si se establece en una lista de nombres de dominio separados por comas, solo se creará una cuenta nueva si el dominio de la dirección de correo electrónico del usuario coincide con uno de los dominios de la lista. Si el dominio no coincide, un administrador debe crear manualmente la cuenta de usuario con la dirección de correo electrónico del usuario OIDC, ya sea con una contraseña aleatoria segura o, preferiblemente, sin el campo hashedPassword. Los nombres de dominio pueden incluir un comodín *. inicial para coincidir con subdominios.
Ejemplo: para permitir la creación de cuentas JIT a usuarios con direcciones de correo como name@example.com y name@math.example.com: OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS=example.com, *.example.com
Ejemplo: para deshabilitar por completo la creación de cuentas JIT: OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS=
OVERLEAF_OIDC_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 deshabilita el formulario de datos del usuario en la página /user/settings.
OVERLEAF_OIDC_IS_ADMIN_FIELD y OVERLEAF_OIDC_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 OP contiene el atributo especificado en OVERLEAF_OIDC_IS_ADMIN_FIELD y su valor coincide con OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE o es un array que contiene OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE (por ejemplo, el claim groups); en caso contrario, user.isAdmin se establece en false. Si OVERLEAF_OIDC_IS_ADMIN_FIELD es email, se utiliza el valor del atributo emails[0].value para la comprobación.
La URL de redirección para tu proveedor de OpenID es https://my-overleaf-instance.com/oidc/login/callback.
Ejemplo de archivo variables.env
variables.env
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################### OIDC for CE ###################EXTERNAL_AUTH=oidcOVERLEAF_OIDC_PROVIDER_ID=oidcOVERLEAF_OIDC_ISSUER=https://keycloak.provider.com/realms/exampleOVERLEAF_OIDC_AUTHORIZATION_URL=https://keycloak.provider.com/realms/example/protocol/openid-connect/authOVERLEAF_OIDC_TOKEN_URL=https://keycloak.provider.com/realms/example/protocol/openid-connect/tokenOVERLEAF_OIDC_USER_INFO_URL=https://keycloak.provider.com/realms/example/protocol/openid-connect/userinfoOVERLEAF_OIDC_LOGOUT_URL=https://keycloak.provider.com/realms/example/protocol/openid-connect/logoutOVERLEAF_OIDC_CLIENT_ID=Overleaf-OIDCOVERLEAF_OIDC_CLIENT_SECRET=DoNotUseThisATGgaAcTgCcATgGATTACAagGtTCaGcGTAGOVERLEAF_OIDC_IDENTITY_SERVICE_NAME='Log in with Keycloak OIDC Provider'OVERLEAF_OIDC_PROVIDER_NAME=OIDC Keycloak ProviderOVERLEAF_OIDC_PROVIDER_INFO_LINK=https://openid.netOVERLEAF_OIDC_IS_ADMIN_FIELD=emailOVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE=overleaf.admin@example.comOVERLEAF_OIDC_UPDATE_USER_DETAILS_ON_LOGIN=false
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
En Authentik, abre Applications > Providers, haz clic en New Provider, elige OAuth2/OpenID Provider y haz clic en Next.
Client Type: Confidential.
Redirect URIs (en Protocol settings): añade https://overleaf.example.com/oidc/login/callback con el modo de coincidencia Strict.
Copia ahora Client ID y Client Secret en OVERLEAF_OIDC_CLIENT_ID y OVERLEAF_OIDC_CLIENT_SECRET.
Authentik: Client ID y Client Secret de un nuevo proveedor
Authentik solo muestra el secreto del cliente mientras creas el proveedor. Más adelante, el formulario de edición solo ofrece Modify, que sustituye el secreto por uno nuevo.
2
Crear la aplicación
Abre Applications > Applications, crea una nueva aplicación, asígnale un nombre y un slug, por ejemplo overleaf, y selecciona el proveedor. El slug pasa a formar parte del emisor: https://authentik.example.com/application/o/overleaf/.
Authentik envía los grupos del usuario en el claim groups, que es un array. 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 OIDC. Con un campo o un valor incorrecto, todos los administradores que inicien sesión mediante OIDC pierden los derechos de administrador, incluido el administrador creado en el launchpad. Prueba primero la asignación con una segunda cuenta de administrador.
Archivo variables.env probado para goauthentik
variables.env
EXTERNAL_AUTH=oidcOVERLEAF_OIDC_PROVIDER_ID=authentikOVERLEAF_OIDC_IDENTITY_SERVICE_NAME=Log in with AuthentikOVERLEAF_OIDC_ISSUER=https://authentik.example.com/application/o/overleaf/OVERLEAF_OIDC_AUTHORIZATION_URL=https://authentik.example.com/application/o/authorize/OVERLEAF_OIDC_TOKEN_URL=https://authentik.example.com/application/o/token/OVERLEAF_OIDC_USER_INFO_URL=https://authentik.example.com/application/o/userinfo/OVERLEAF_OIDC_LOGOUT_URL=https://authentik.example.com/application/o/overleaf/end-session/OVERLEAF_OIDC_CLIENT_ID=<Client ID>OVERLEAF_OIDC_CLIENT_SECRET=<Client Secret>OVERLEAF_OIDC_USER_ID_FIELD=usernameOVERLEAF_OIDC_IS_ADMIN_FIELD=groupsOVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE=AdminsOVERLEAF_OIDC_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.