Содержание

Вход через каталог

LDAP или Active Directory рядом с локальными учётными записями. Настраивается в панели, вкладка появляется на странице входа только когда каталог включён и адрес сервера задан: предлагать вкладку без сервера значило бы предлагать гарантированную ошибку.

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

Bind как сам пользователь, а не сверка хеша. Пароль уходит в каталог, каталог отвечает, получилось или нет. Гейт и панель пароля каталога не видят и не хранят.

Настройки

Поле Смысл
Адрес сервера ldap://host:389 или ldaps://host:636
StartTLS поднять TLS на открытом соединении
Проверять TLS выключать только для самоподписанного сертификата в тесте
Base DN где искать пользователей
Шаблон bind uid=%s,ou=people,dc=example,dc=com — прямой bind без поиска
DN служебной записи для поиска пользователя, если шаблона нет
Пароль служебной записи шифруется тем же ключом, что секреты провайдеров
Фильтр пользователя по умолчанию (\|(sAMAccountName={username})(userPrincipalName={username}))
Атрибут адреса mail
Атрибут имени displayName
DN обязательной группы без членства вход запрещён
DN группы администраторов членство даёт роль admin при входе
Подпись вкладки что видно на странице входа
Подсказка логина например «домен\логин»
Таймаут 8 секунд по умолчанию

Два пути к пользователю: шаблон bind — прямой, без служебной записи, годится когда DN предсказуем; поиск — служебная запись находит пользователя по фильтру, потом bind его DN. Фильтр по умолчанию принимает и sAMAccountName, и userPrincipalName, потому что в AD люди вводят то и другое.

Кнопка проверки

Проверяет соединение и bind служебной записи, не касаясь чьего-то пароля. Ответ показывается как есть — включая текст ошибки от сервера, потому что «не удалось» без причины не помогает никому.

Что происходит при первом входе

Для каждой учётной записи каталога создаётся локальная строка. Она нужна, чтобы сессии, список администраторов и владение ключами работали одинаково, откуда бы credential ни пришёл.

  • Пароля у такой записи нет — password_hash остаётся пустым, а не заполняется непригодным заглушечным хешем: это стёрло бы разницу между «нет пароля» и «пароль есть, но не подходит».
  • Имя и адрес каталог обновляет при каждом входе — он им владеет.
  • DN сохраняется, чтобы переименованную запись можно было опознать.
  • Роль: admin, если задана группа администраторов и человек в ней; иначе user.

Наценка, потолок ключей и метки — локальные, каталог их не знает (см. Пользователи и ключи).

Зачем это нужно

Каталог впускает всех, кого впускает каталог, и большинству из них нечего делать в провайдерах и ценах. Поэтому роль по умолчанию — user: человек получает страницу со своими ключами и расходом, а не панель.

Группа администраторов — способ передать администрирование каталогу. Это же и шаг, который делает возможным удаление первой, начальной учётной записи: пока она единственный администратор, панель её не отдаст.