Внутри модуль SAML в Overleaf использует библиотеку passport-saml; большинство приведённых ниже параметров конфигурации передаются в passport-saml без изменений. Если у вас возникают проблемы с настройкой SAML, стоит прочитать README для passport-saml, чтобы понять, какую конфигурацию она ожидает.Для включения модуля аутентификации SAML необходима переменная окружения EXTERNAL_AUTH. Она определяет, какие внешние методы аутентификации активированы. Значением этой переменной является список. Если список содержит saml, будет активирована аутентификация SAML.Например: EXTERNAL_AUTH=ldap samlПри использовании метода аутентификации SAML пользователь перенаправляется на сайт аутентификации поставщика удостоверений (IdP). Если IdP успешно аутентифицирует пользователя, в базе данных пользователей Overleaf выполняется поиск записи, содержащей поле samlIdentifiers следующей структуры:
Значение externalUserId должно совпадать со значением свойства, указанного в userIdAttribute, в профиле пользователя, возвращаемом сервером IdP.Если подходящая запись не найдена, в базе данных выполняется поиск пользователя, основной адрес электронной почты которого совпадает с адресом в профиле пользователя IdP:
Если такой пользователь найден, поле hashedPassword удаляется, чтобы отключить локальную аутентификацию, и добавляется поле samlIdentifiers.
Если подходящий пользователь не найден, создаётся новый пользователь с адресом электронной почты и samlIdentifiers из профиля IdP.
Примечание: в настоящее время поддерживается только один SAML IdP. Поле providerId в samlIdentifiers всегда имеет значение '1'.
Отображаемое имя службы идентификации, используемое на странице входа (по умолчанию: Log in with SAML IdP).
OVERLEAF_SAML_USER_ID_FIELD
Значение этого атрибута будет использоваться Overleaf как внешний идентификатор пользователя; по умолчанию nameID.
OVERLEAF_SAML_EMAIL_FIELD
Имя поля адреса электронной почты в профиле пользователя; по умолчанию nameID.
OVERLEAF_SAML_FIRST_NAME_FIELD
Имя поля firstName в профиле пользователя; по умолчанию givenName.
OVERLEAF_SAML_LAST_NAME_FIELD
Имя поля lastName в профиле пользователя; по умолчанию lastName
OVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN
Если установлено значение true, при входе обновляются поля пользователя first_name и last_name, а форма сведений о пользователе на странице /user/settings отключается.
Пример для Azure: https://login.microsoftonline.com/8b26b46a-6dd3-45c7-a104-f883f4db1f6b/saml2
OVERLEAF_SAML_ISSUER(обязательно)
Имя издателя (Issuer).
OVERLEAF_SAML_AUDIENCE
Ожидаемое значение Audience в ответе SAML; по умолчанию равно значению OVERLEAF_SAML_ISSUER.
OVERLEAF_SAML_IDP_CERT(обязательно)
Путь к файлу с открытым сертификатом поставщика удостоверений, который используется для проверки подписей входящих ответов SAML. Если у поставщика удостоверений несколько действительных сертификатов подписи, можно указать JSON-массив путей к сертификатам.
Пример (один сертификат): /var/lib/overleaf/certs/idp_cert.pem
Пример (несколько сертификатов): ["var/lib/overleaf/certs/idp_cert.pem", "/var/lib/overleaf/certs/idp_cert_old.pem"]
OVERLEAF_SAML_PUBLIC_CERT
Путь к файлу с открытым сертификатом подписи, который встраивается в запросы аутентификации, чтобы IdP мог проверить подписи входящего запроса SAML. Он необходим при настройке эндпоинта метаданных, если стратегия настроена с OVERLEAF_SAML_PRIVATE_KEY. Для поддержки ротации сертификатов можно указать JSON-массив путей к сертификатам. При передаче массива сертификатов первый элемент массива должен соответствовать текущему OVERLEAF_SAML_PRIVATE_KEY. Дополнительные элементы массива можно использовать, чтобы заранее опубликовать для IdP будущие сертификаты до смены OVERLEAF_SAML_PRIVATE_KEY.
OVERLEAF_SAML_PRIVATE_KEY
Путь к файлу с закрытым ключом в формате PEM, соответствующим OVERLEAF_SAML_PUBLIC_CERT, который используется для подписи запросов аутентификации, отправляемых passport-saml.
Путь к файлу с закрытым ключом, соответствующим OVERLEAF_SAML_DECRYPTION_CERT, который будет использоваться для попытки расшифровать полученные зашифрованные утверждения (assertions).
OVERLEAF_SAML_SIGNATURE_ALGORITHM
Необязательно задаёт алгоритм подписи запросов; допустимые значения: ‘sha1’ (по умолчанию), ‘sha256’ (предпочтительно), ‘sha512’ (наиболее безопасно, проверьте, поддерживает ли его ваш IdP).
OVERLEAF_SAML_ADDITIONAL_PARAMS
JSON-словарь дополнительных параметров запроса, добавляемых ко всем запросам.
OVERLEAF_SAML_ADDITIONAL_AUTHORIZE_PARAMS
JSON-словарь дополнительных параметров запроса, добавляемых к запросам ‘authorize’.
Пример: {"some_key": "some_value"}
OVERLEAF_SAML_IDENTIFIER_FORMAT
Формат идентификатора имени, запрашиваемый у поставщика удостоверений (по умолчанию: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress). При использовании urn:oasis:names:tc:SAML:2.0:nameid-format:persistent убедитесь, что задана переменная окружения OVERLEAF_SAML_EMAIL_FIELD. Если требуется urn:oasis:names:tc:SAML:2.0:nameid-format:transient, необходимо также задать переменную окружения OVERLEAF_SAML_USER_ID_FIELD, которой можно, например, присвоить адрес электронной почты пользователя.
OVERLEAF_SAML_ACCEPTED_CLOCK_SKEW_MS
Допустимое расхождение часов между клиентом и сервером в миллисекундах при проверке временных меток условий утверждения OnBefore и NotOnOrAfter. Значение -1 полностью отключает проверку этих условий. По умолчанию 0.
OVERLEAF_SAML_ATTRIBUTE_CONSUMING_SERVICE_INDEX
Атрибут AttributeConsumingServiceIndex, добавляемый в AuthnRequest, чтобы указать IdP, какой набор атрибутов прикрепить к ответу (ссылка).
OVERLEAF_SAML_AUTHN_CONTEXT
JSON-массив значений формата идентификатора имени для запроса контекста аутентификации. По умолчанию: ["urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"].
OVERLEAF_SAML_FORCE_AUTHN
Если true, первоначальный запрос SAML от поставщика услуг указывает, что IdP должен принудительно повторно аутентифицировать пользователя, даже если у него есть действующий сеанс.
OVERLEAF_SAML_DISABLE_REQUESTED_AUTHN_CONTEXT
Если true, конкретный контекст аутентификации не запрашивается. Например, можно установить значение true, чтобы разрешить дополнительные контексты, такие как вход без пароля (urn:oasis:names:tc:SAML:2.0:ac:classes:X509). Поддержка дополнительных контекстов зависит от вашего IdP.
OVERLEAF_SAML_AUTHN_REQUEST_BINDING
Если установлено значение HTTP-POST, аутентификация у IdP будет запрашиваться через привязку HTTP POST; в противном случае по умолчанию используется HTTP-Redirect.
OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO
Если always, InResponseTo будет проверяться во входящих ответах SAML.
Если never, InResponseTo не будет проверяться (по умолчанию).
Если ifPresent, InResponseTo будет проверяться, только если присутствует во входящем ответе SAML.
OVERLEAF_SAML_WANT_ASSERTIONS_SIGNED и OVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED
Если установлено значение true (по умолчанию), Overleaf ожидает, что утверждения SAML (Assertions) или, соответственно, весь ответ аутентификации SAML будут подписаны IdP. Если оба параметра равны false, должно быть подписано хотя бы одно из утверждений или ответ.
OVERLEAF_SAML_REQUEST_ID_EXPIRATION_PERIOD_MS
Задаёт срок, по истечении которого идентификатор запроса (Request ID), сгенерированный для запроса SAML, будет считаться недействительным, если встретится в ответе SAML в поле InResponseTo. По умолчанию: 28800000 (8 часов).
OVERLEAF_SAML_LOGOUT_URL
Базовый адрес для отправки запросов на выход (по умолчанию: entryPoint).
JSON-словарь дополнительных параметров запроса, добавляемых к запросам ‘logout’.
OVERLEAF_SAML_IS_ADMIN_FIELD и OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE
Если заданы обе переменные окружения, в процессе входа устанавливается user.isAdmin = true, если профиль, возвращённый SAML IdP, содержит атрибут, указанный в OVERLEAF_SAML_IS_ADMIN_FIELD, и его значение либо совпадает с OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE, либо является массивом, содержащим OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE; в противном случае user.isAdmin устанавливается в false. Если хотя бы одна из этих переменных не задана, статус администратора устанавливается в true только при создании пользователя-администратора в Launchpad.
Метаданные для поставщика удостоверенийТекущая версия Overleaf CE включает эндпоинт для получения метаданных поставщика услуг (Service Provider): http://my-overleaf-instance.com/saml/metaПоставщик удостоверений должен быть настроен так, чтобы распознавать сервер Overleaf как «поставщика услуг» (Service Provider). Инструкции по этой настройке см. в документации вашего сервера SAML.Ниже приведён пример подходящих метаданных поставщика услуг:
Обратите внимание на сертификаты, AssertionConsumerService.Location, SingleLogoutService.Location и EntityDescriptor.entityID и задайте соответствующие значения в конфигурации вашего IdP либо отправьте файл метаданных администратору IdP.
Пример файла 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################### 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=
Здесь описана настройка, проверенная с goauthentik. Замените https://overleaf.example.com на ваш OVERLEAF_SITE_URL, а https://authentik.example.com — на адрес вашего Authentik.
1
Создайте провайдер и приложение
В Authentik откройте Applications > Applications и нажмите New Application. Мастер создаёт приложение и его провайдер одновременно.1. Задайте приложению имя и slug, например overleaf, и нажмите Next:
OVERLEAF_SAML_ENTRYPOINT и OVERLEAF_SAML_LOGOUT_URL
Audience
OVERLEAF_SAML_ISSUER
Download signing certificate (файл)
OVERLEAF_SAML_IDP_CERT, см. следующий шаг
EntityID/Issuer в разделе SAML Configuration — это имя самого Authentik. Не указывайте его в OVERLEAF_SAML_ISSUER, используйте Audience.
3
Установите сертификат подписи
Нажмите Download в разделе Download signing certificate и сохраните файл как data/overleaf/certs/idp_cert.pem в каталоге Toolkit. Контейнер видит его как /var/lib/overleaf/certs/idp_cert.pem:
Флаг администратора обновляется при каждом входе через SAML. При неверном поле или значении каждый администратор, вошедший через SAML, теряет права администратора. Сначала проверьте сопоставление на второй учётной записи администратора.
Проверенный variables.env для 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
Последнее изменение 6 октября 2026 г.
Была ли эта страница полезной?
Assistant
Responses are generated using AI and may contain mistakes.