docs: describe ASCII 8-72 password policy and drop resolved discrepancy (WealthLedger/docs#46)
Document the register and login password rules and the bcrypt 72-byte reason, remove the known frontend/backend discrepancy block and the link to it. Refs WealthLedger/backend#60.
This commit is contained in:
@@ -198,9 +198,8 @@ access token и вращаемый refresh token. [Политика query-кэш
|
||||
|
||||
Авторизация доступа, недопущение token в публичный ответ и атомарность
|
||||
ротации сессии — отдельные свойства; наличие типизированного клиента
|
||||
не доказывает их. Известное расхождение регистрации отмечено в
|
||||
[аутентификации](../domains/authentication/overview.md#регистрация-и-вход),
|
||||
а действующий формат ошибок описан в [HTTP API](http-api.md#error-contract).
|
||||
не доказывает их. Действующий формат ошибок описан в
|
||||
[HTTP API](http-api.md#error-contract).
|
||||
|
||||
Поддерживается локальный Compose и ограниченная single-server topology с SQLite.
|
||||
Origin браузера, адрес API и cookie policy должны быть согласованы.
|
||||
|
||||
@@ -11,14 +11,20 @@
|
||||
|
||||
Пользователь регистрируется или входит по email и паролю. Регистрация сразу
|
||||
создаёт первую сессию. Внешние пробелы email удаляются, буквы приводятся
|
||||
к нижнему регистру. Backend требует пароль не короче 12 символов и не длиннее
|
||||
72 UTF-8 байтов.
|
||||
к нижнему регистру.
|
||||
|
||||
**Известное расхождение:** сохранённое требование регистрации и проверка
|
||||
в форме frontend считают нижнюю границу в UTF-8 байтах, а backend — в символах.
|
||||
Не-ASCII пароль может пройти форму и получить отказ API. Это не принятое
|
||||
изменение password policy; требуется отдельное согласованное решение
|
||||
о проверке пароля и подтверждение полного HTTP-потока.
|
||||
Пароль при регистрации — от 8 до 72 печатных ASCII-символов: латинские
|
||||
буквы, цифры, спецсимволы и пробел. Кириллица, emoji, другие не-ASCII и
|
||||
управляющие символы отклоняются. Пароль не обрезается и не нормализуется, а
|
||||
обязательных классов символов нет. Верхняя граница вытекает из bcrypt, который
|
||||
учитывает только первые 72 байта: для ASCII символ равен байту, поэтому
|
||||
длинный пароль не обрезается молча. Frontend и backend проверяют одну и ту же
|
||||
политику.
|
||||
|
||||
При входе проверяется только то, что пароль непустой и не длиннее 72 UTF-8
|
||||
байтов. Минимум и набор символов не применяются, чтобы пользователь,
|
||||
зарегистрированный по прежним правилам (в том числе с не-ASCII паролем), мог
|
||||
войти. Невалидный пароль получает `400` с кодом `VALIDATION_ERROR`.
|
||||
|
||||
Access token действует 15 минут и хранится только в памяти браузера.
|
||||
Refresh token имеет серверный срок 7 дней, заменяется при восстановлении
|
||||
|
||||
Reference in New Issue
Block a user