Вход через каталог
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: человек получает
страницу со своими ключами и расходом, а не панель.
Группа администраторов — способ передать администрирование каталогу. Это же и шаг, который делает возможным удаление первой, начальной учётной записи: пока она единственный администратор, панель её не отдаст.