Перейти к основному содержимому

Аутентификация

В Semaphore есть три способа установить, кто перед вами. Они независимы и могут быть включены одновременно, поэтому на экране входа могут одновременно присутствовать форма с паролем, вход через каталог и по одной кнопке на каждого провайдера идентификации.

СпособКто проверяет парольКогда использовать
Локальные учётные записиSemaphore, по собственной базе данныхУ вас нет каталога или нужен аварийный администратор.
LDAP и Active DirectoryВаш сервер каталогаЛюди уже существуют в LDAP или AD, и вы хотите один набор учётных данных.
OpenID ConnectВаш провайдер идентификацииУ вас есть единый вход: Keycloak, Okta, Entra ID, Google, GitHub и другие.

Аутентификация отвечает только на вопрос, кто этот пользователь. Что ему разрешено делать, определяется отдельно — его ролью на сервере и ролью в каждом проекте, см. Команды.

Как появляется запись пользователя

У каждого, кто входит в систему, есть строка в базе данных Semaphore, каким бы способом он ни пользовался. Локальная учётная запись создаётся администратором или командой semaphore user add. Учётная запись LDAP или OIDC создаётся при первом успешном входе, и рядом с ней Semaphore сохраняет внешнюю личность: идентификатор провайдера плюс идентификатор пользователя, который вернул этот провайдер.

Именно по этой внешней личности сопоставляются последующие входы, а значит, переименование человека в каталоге не создаёт вторую учётную запись. Внимания требует первый вход существующего пользователя, когда внешней личности ещё нет. Что произойдёт в этом случае, определяет параметр external_auth_email_matching:

ЗначениеПоведение
auto (по умолчанию)Связывать по адресу электронной почты, но только для внешних пользователей, у которых ещё нет личности. Это один раз подхватывает учётные записи, созданные до 2.20, и ничего больше.
alwaysСвязывать по адресу электронной почты любого внешнего пользователя. Используйте, когда один человек входит через несколько провайдеров.
neverНикогда не связывать по адресу электронной почты; личности сопоставляются строго по идентификатору провайдера.

Локальные учётные записи с паролем никогда не сопоставляются по адресу электронной почты, ни в одном из режимов. Иначе провайдер OIDC, позволяющий пользователю самому выбрать адрес электронной почты, можно было бы использовать для захвата учётной записи администратора.

внимание

Идентификатор провайдера — ключ в oidc_providers или ldap_providers — входит в состав каждой сохранённой личности. Его переименование делает ссылающиеся на него личности осиротевшими, и такие пользователи при следующем входе получат новые пустые учётные записи. Выбирайте его один раз.

Сочетание способов

Реалистичная конфигурация включает единый вход для людей и оставляет одного локального администратора на тот день, когда провайдер идентификации окажется недоступен:

  1. Настройте провайдера и убедитесь, что реальный пользователь может через него войти.
  2. Выдайте этому пользователю нужные роли.
  3. Сохраните одну локальную учётную запись администратора с надёжным паролем и включённым TOTP.
  4. Установите password_login_disable, чтобы запретить всем остальным вход по паролю.

Делайте это именно в таком порядке. Установленный до шага 1 параметр password_login_disable сработает ровно так, как обещано, и закроет вам доступ к собственному серверу.

В этом разделе

СтраницаО чём она
Локальные учётные записиПароли, TOTP, одноразовые коды по электронной почте, время жизни сессии и отключение входа по паролю.
LDAP и Active DirectoryПривязка к каталогу, фильтры поиска, сопоставление атрибутов и TLS.
OpenID ConnectНастройка провайдеров, выражения claim, вход, инициированный IdP, и двенадцать разобранных примеров провайдеров.

С чего начать

В новой установке локальный администратор уже создан во время настройки, поэтому начните с Локальных учётных записей, чтобы защитить его, а затем добавьте OpenID Connect или LDAP для всех остальных.