System Settings хранит две настройки, которые относятся ко всему развёртыванию, а не к одному тенанту: политику паролей и логотип провайдера идентификации. Пароль принадлежит пользователю, а не тенанту, поэтому и политика, которая им управляет, общая. Экран не зависит от выбранного в боковой панели тенанта.
Перед началом
| Что нужно | Разрешение |
|---|---|
| Открыть экран | security:read |
| Менять настройки (кнопка Edit) | security:manage |
Настройки хранятся в Central и попадают в auth через синхронизацию конфигурации, поэтому сохранённое изменение применяется после очередного обновления. edge их не использует.

Поля
Edit открывает форму ниже. Save записывает все четыре значения сразу, Cancel отбрасывает их.
| Поле | За что отвечает | По умолчанию | Проверка |
|---|---|---|---|
| Password Regex | Шаблон, которому целиком должен соответствовать каждый вводимый пароль. | ^(?=.*[A-Z])(?=.*[a-z])(?=.*\d).{8,}$ (не меньше 8 символов, с заглавной и строчной буквой и цифрой) | Обязательное. Консоль отклоняет шаблон, который не является корректным регулярным выражением. |
| Password History Size | Сколько предыдущих паролей Versola хранит для пользователя, считая текущий. | 2 | Целое число, 0 и больше. |
| Different Passwords Required | От скольких последних сохранённых паролей новый пароль должен отличаться. | 1 (новый пароль должен отличаться от текущего) | Целое число, 0 и больше. |
| Identity Provider Logo | Логотип на страницах входа; он же favicon этих страниц. | пусто (в режиме чтения показан прочерк —) | Пусто или абсолютный URL http либо https с хостом. Пробелы по краям обрезаются; пустое значение убирает логотип. |

Central отклоняет логотип, который не является абсолютным URL http(s), с сообщением Identity provider logo must be an absolute HTTP(S) URL. Регулярное выражение Central не проверяет, единственная проверка — в консоли. Форма в браузере проверяет его как шаблон JavaScript, а auth вычисляет его в Java, поэтому используйте конструкции, которые понимают оба (классы символов, квантификаторы, lookahead).
Учитываются только сохранённые пароли. Если Different Passwords Required больше Password History Size, это ничего не добавляет: более старых паролей у auth просто нет.
Как применяется политика
Регулярное выражение auth проверяет на сервере каждый раз, когда пароль вводят на странице входа: на шаге пароля, на объединённом шаге логина и пароля и на шаге Set New Password. Если пароль не подходит, запрос отклоняется с 400 ещё до сверки со сохранённым паролем.
Warning: Шаблон действует и при входе, а не только для новых паролей. После ужесточения шаблона пользователь, чей текущий пароль ему уже не соответствует, не сможет отправить его на странице входа. Меняйте шаблон вместе с планом для таких пользователей, например со сбросом пароля.
Если шаблон не является корректным регулярным выражением Java, auth считает подходящим любой пароль. Консоль неверные шаблоны не пропускает, так что это возможно, только если настройку записали в Central напрямую через API.
Правила истории действуют, когда пользователь задаёт постоянный пароль. Новый пароль отклоняется, если он совпадает с одним из последних Different Passwords Required паролей. После сохранения в записи остаются только Password History Size самых новых паролей. Если пользователь входит со старым паролем, который ещё хранится, auth его не принимает и показывает, когда пароль был изменён.
Первый вход и сброс пароля
Временные пароли бывают двух видов: пароль первого администратора из bootstrap и пароль, который выдаёт кнопка Reset Password на карточке пользователя (см. Пользователь). Оба проходят один путь:
- Пользователь входит с временным паролем.
authпринимает его как фактор «пароль», проходит остальные факторы (например, код OTP) и затем показывает Set New Password. Просроченный временный пароль отклоняется. - Новый пароль должен соответствовать Password Regex и пройти правила истории выше. Пароль, повторяющий недавний, отклоняется с сообщением о повторе, а неудачная попытка идёт в счёт лимитов отправки пароля у тенанта (см. Challenges & Security).
- При сохранении новый пароль записывается как постоянный, временный удаляется и в историю не попадает.
Сброс создаёт временный пароль из 16 символов, который удовлетворяет Password Regex; генерация пробуется до 20 раз. Если шаблон настолько строг, что случайные пароли почти не проходят, сброс завершится ошибкой, а слабый пароль не выдаётся. Сброс без срока действия истекает через 12 часов. В продакшене пароль доставляется пользователю по email или SMS с шаблоном password из Challenges & Security; показать его в консоли можно только вне продакшена.
Внутренний вызов POST /users/password/set в auth применяет правила истории, но Password Regex не проверяет.
Что дальше
- Challenges & Security — шаблоны и лимиты отправки пароля
- Пользователь и Как зарегистрировать пользователя
- Well Known