Skip to main content
Эта функция разработана в yu-i-i/overleaf-cep. Здесь мы приводим документацию по её настройке.

Настройка

Внутри модуль 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'.

Переменные окружения

  • OVERLEAF_SAML_IDENTITY_SERVICE_NAME
    • Отображаемое имя службы идентификации, используемое на странице входа (по умолчанию: 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 отключается.
  • OVERLEAF_SAML_ENTRYPOINT (обязательно)
    • URL точки входа службы идентификации SAML.
      • Пример: https://idp.example.com/simplesaml/saml2/idp/SSOService.php
      • Пример для 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
  • OVERLEAF_SAML_DECRYPTION_PVK
    • Путь к файлу с закрытым ключом, соответствующим 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).
      • Пример: https://idp.example.com/simplesaml/saml2/idp/SingleLogoutService.php
  • OVERLEAF_SAML_ADDITIONAL_LOGOUT_PARAMS
    • 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.

Пошаговая инструкция: goauthentik

Здесь описана настройка, проверенная с goauthentik. Замените https://overleaf.example.com на ваш OVERLEAF_SITE_URL, а https://authentik.example.com — на адрес вашего Authentik.
1

Создайте провайдер и приложение

В Authentik откройте Applications > Applications и нажмите New Application. Мастер создаёт приложение и его провайдер одновременно.1. Задайте приложению имя и slug, например overleaf, и нажмите Next:

Authentik: имя и slug приложения

2. Выберите SAML Provider и нажмите Next:

Authentik: выбор провайдера SAML

3. Заполните параметры провайдера:
  • Authorization Flow: default-provider-authorization-implicit-consent
  • ACS URL: https://overleaf.example.com/saml/login/callback
  • Audience: имя для Overleaf, например overleaf. Overleaf передаёт его как OVERLEAF_SAML_ISSUER.

Authentik: SAML-провайдер приложения

4. Откройте Advanced protocol settings и установите:
  • Signing Certificate: сертификат, например authentik Self-signed Certificate
  • Sign assertions и Sign responses: оба включены
  • Service Provider Binding: Post

Authentik: подпись и binding проверенного провайдера (тестовый экземпляр)

5. Нажимайте Next до последней страницы и отправьте приложение.
2

Скопируйте значения со страницы провайдера

Снова откройте провайдер. Всё, что нужно Overleaf, есть на странице обзора:

Authentik: обзор SAML-провайдера (тестовый экземпляр)

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:
4

Сопоставьте атрибуты

Authentik передаёт свои атрибуты под следующими именами:
Группы передаются как http://schemas.xmlsoap.org/claims/Group в виде списка. Чтобы члены группы Authentik Admins стали администраторами Overleaf:
Флаг администратора обновляется при каждом входе через SAML. При неверном поле или значении каждый администратор, вошедший через SAML, теряет права администратора. Сначала проверьте сопоставление на второй учётной записи администратора.
variables.env
Последнее изменение 6 октября 2026 г.