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

Настройка

Внутри модуль OIDC в Overleaf использует библиотеку passport-openidconnect. Если у вас возникают проблемы с настройкой OpenID Connect, стоит прочитать README для passport-openidconnect, чтобы понять, какую конфигурацию она ожидает. Для включения модуля аутентификации OIDC необходима переменная окружения EXTERNAL_AUTH. Она определяет, какие внешние методы аутентификации активированы. Значением этой переменной является список. Если список содержит oidc, будет активирована аутентификация OIDC. Например: EXTERNAL_AUTH=ldap oidc При использовании метода аутентификации OIDC пользователь перенаправляется на сайт аутентификации поставщика удостоверений (IdP). Если IdP успешно аутентифицирует пользователя, в базе данных пользователей Overleaf выполняется поиск записи, содержащей поле thirdPartyIdentifiers следующей структуры:
Значение externalUserId должно совпадать с идентификатором пользователя в профиле, возвращаемом сервером IdP (см. переменную окружения OVERLEAF_OIDC_USER_ID_FIELD), а providerId должно совпадать с идентификатором провайдера OIDC (см. OVERLEAF_OIDC_PROVIDER_ID). Если подходящая запись не найдена, в базе данных выполняется поиск пользователя, основной адрес электронной почты которого совпадает с адресом в профиле пользователя IdP:
  • Если такой пользователь найден, поле thirdPartyIdentifiers обновляется.
  • Если подходящий пользователь не найден и создание учётных записей JIT не отключено, создаётся новый пользователь с адресом электронной почты и thirdPartyIdentifiers из профиля IdP.
В обоих случаях говорят, что пользователь «связан» с внешним пользователем OIDC. Пользователь может отвязаться от провайдера OIDC на странице /user/settings.

Поиск значений с помощью документа обнаружения

Каждый провайдер OpenID (OP) публикует документ обнаружения (discovery document) по адресу <issuer>/.well-known/openid-configuration. Копируйте значения из него, а не вводите их вручную: одного неверного символа достаточно, чтобы вход перестал работать.
1

Найдите URL документа обнаружения

Ваш OP показывает его на странице клиента (провайдера), созданного для Overleaf. В Authentik откройте Applications > Providers, выберите провайдер и найдите OpenID Configuration URL и OpenID Configuration Issuer:

Authentik: URL документа обнаружения и issuer провайдера (тестовый экземпляр)

Обычно URL выглядит так:
  • Keycloak: https://keycloak.example.com/realms/<realm>/.well-known/openid-configuration
  • Authentik: https://authentik.example.com/application/o/<application-slug>/.well-known/openid-configuration
2

Прочитайте значения

Откройте URL в браузере или выполните на сервере Overleaf:
Ответ Authentik выглядит так:
Authentik также перечисляет эти URL ниже на странице провайдера:

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

3

Скопируйте их в variables.env

4

Проверьте, что Overleaf может связаться с OP

Overleaf обращается к эндпоинтам token и userinfo изнутри своего контейнера, поэтому OP должен быть доступен оттуда, а не только из вашего браузера:
Команда должна вывести 200.
Копируйте issuer точно, включая завершающую косую черту. Overleaf посимвольно сравнивает его с issuer в ID-токене; любое расхождение приводит к тому, что каждый вход через OIDC завершается ошибкой:{"message":{"message":"ID token not issued by expected OpenID provider."}}В Authentik issuer принадлежит приложению (.../application/o/<application-slug>/). Это не адрес сервера Authentik, хотя URL authorize, token и userinfo общие для всех приложений.

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

Значения следующих пяти обязательных переменных можно узнать через эндпоинт .well-known/openid-configuration вашего провайдера OpenID (OP), см. выше.
  • OVERLEAF_OIDC_ISSUER (обязательно)
  • OVERLEAF_OIDC_AUTHORIZATION_URL (обязательно)
  • OVERLEAF_OIDC_TOKEN_URL (обязательно)
  • OVERLEAF_OIDC_USER_INFO_URL (обязательно)
  • OVERLEAF_OIDC_LOGOUT_URL (обязательно)
Значения следующих двух обязательных переменных предоставит администратор вашего OP
  • OVERLEAF_OIDC_CLIENT_ID (обязательно)
  • OVERLEAF_OIDC_CLIENT_SECRET (обязательно)
  • OVERLEAF_OIDC_SCOPE
    • По умолчанию: openid profile email
  • OVERLEAF_OIDC_PROVIDER_ID
    • Произвольный идентификатор OP, по умолчанию oidc.
  • OVERLEAF_OIDC_PROVIDER_NAME
    • Название OP, используемое в разделе Linked Accounts страницы /user/settings, по умолчанию OIDC Provider.
  • OVERLEAF_OIDC_IDENTITY_SERVICE_NAME
    • Отображаемое имя службы идентификации, используемое на странице входа (по умолчанию: Log in with $OVERLEAF_OIDC_PROVIDER_NAME).
  • OVERLEAF_OIDC_PROVIDER_DESCRIPTION
    • Описание OP, используемое в разделе Linked Accounts (по умолчанию: Log in with $OVERLEAF_OIDC_PROVIDER_NAME).
  • OVERLEAF_OIDC_PROVIDER_INFO_LINK
    • URL ссылки Learn more в описании OP; по умолчанию ссылки Learn more в описании нет.
  • OVERLEAF_OIDC_PROVIDER_HIDE_NOT_LINKED
    • Не показывать OP на странице /user/settings, если учётная запись пользователя не связана с OP; по умолчанию false.
  • OVERLEAF_OIDC_USER_ID_FIELD
    • Значение этого атрибута будет использоваться Overleaf как внешний идентификатор пользователя; по умолчанию id. Другие разумные возможные значения — email и username (соответствует claim OIDC preferred_username).
  • OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS
    • Ограничивает создание учётных записей Just-in-Time (JIT) для пользователей, аутентифицирующихся через OIDC. Если задан список доменных имён через запятую, новая учётная запись будет создана, только если домен адреса электронной почты пользователя совпадает с одним из перечисленных доменов. Если домен не совпадает, администратор должен вручную создать учётную запись пользователя с адресом электронной почты пользователя OIDC, задав либо надёжный случайный пароль, либо, что предпочтительнее, вообще без поля hashedPassword. Доменные имена могут начинаться с подстановочного знака *. для соответствия поддоменам.
      • Пример: чтобы разрешить создание учётных записей JIT для пользователей с адресами вида name@example.com и name@math.example.com:
        OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS=example.com, *.example.com
      • Пример: чтобы полностью отключить создание учётных записей JIT:
        OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS=
  • OVERLEAF_OIDC_UPDATE_USER_DETAILS_ON_LOGIN
    • Если установлено значение true, при входе обновляются поля пользователя first_name и last_name, а форма сведений о пользователе на странице /user/settings отключается.
  • OVERLEAF_OIDC_IS_ADMIN_FIELD и OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE
    • Если заданы обе переменные окружения, в процессе входа устанавливается user.isAdmin = true, если профиль, возвращённый OP, содержит атрибут, указанный в OVERLEAF_OIDC_IS_ADMIN_FIELD, и его значение либо совпадает с OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE, либо является массивом, содержащим OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE (например, claim groups); в противном случае user.isAdmin устанавливается в false. Если OVERLEAF_OIDC_IS_ADMIN_FIELD равно email, для проверки совпадения используется значение атрибута emails[0].value.
URL перенаправления для вашего провайдера OpenID: https://my-overleaf-instance.com/oidc/login/callback.
variables.env

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

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

Создайте провайдер

В Authentik откройте Applications > Providers, нажмите New Provider, выберите OAuth2/OpenID Provider и нажмите Next.
  • Client Type: Confidential.
  • Redirect URIs (в разделе Protocol settings): добавьте https://overleaf.example.com/oidc/login/callback с режимом сопоставления Strict.
  • Сразу скопируйте Client ID и Client Secret в OVERLEAF_OIDC_CLIENT_ID и OVERLEAF_OIDC_CLIENT_SECRET.

Authentik: Client ID и Client Secret нового провайдера

Authentik показывает client secret только при создании провайдера. Позже форма редактирования предлагает лишь Modify, что заменяет секрет новым.
2

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

Откройте Applications > Applications, создайте новое приложение, задайте ему имя и slug, например overleaf, и выберите провайдер. Slug становится частью issuer: https://authentik.example.com/application/o/overleaf/.
3

Скопируйте URL

Следуйте разделу Поиск значений с помощью документа обнаружения выше, чтобы заполнить пять URL.
4

Назначьте администраторов (необязательно)

Authentik передаёт группы пользователя в claim groups в виде массива. Чтобы члены группы Authentik Admins стали администраторами Overleaf:
Флаг администратора обновляется при каждом входе через OIDC. При неверном поле или значении каждый администратор, вошедший через OIDC, теряет права администратора, включая администратора, созданного в launchpad. Сначала проверьте сопоставление на второй учётной записи администратора.
variables.env
Последнее изменение 6 октября 2026 г.