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 в публичный ответ и атомарность
|
Авторизация доступа, недопущение token в публичный ответ и атомарность
|
||||||
ротации сессии — отдельные свойства; наличие типизированного клиента
|
ротации сессии — отдельные свойства; наличие типизированного клиента
|
||||||
не доказывает их. Известное расхождение регистрации отмечено в
|
не доказывает их. Действующий формат ошибок описан в
|
||||||
[аутентификации](../domains/authentication/overview.md#регистрация-и-вход),
|
[HTTP API](http-api.md#error-contract).
|
||||||
а действующий формат ошибок описан в [HTTP API](http-api.md#error-contract).
|
|
||||||
|
|
||||||
Поддерживается локальный Compose и ограниченная single-server topology с SQLite.
|
Поддерживается локальный Compose и ограниченная single-server topology с SQLite.
|
||||||
Origin браузера, адрес API и cookie policy должны быть согласованы.
|
Origin браузера, адрес API и cookie policy должны быть согласованы.
|
||||||
|
|||||||
@@ -11,14 +11,20 @@
|
|||||||
|
|
||||||
Пользователь регистрируется или входит по email и паролю. Регистрация сразу
|
Пользователь регистрируется или входит по email и паролю. Регистрация сразу
|
||||||
создаёт первую сессию. Внешние пробелы email удаляются, буквы приводятся
|
создаёт первую сессию. Внешние пробелы email удаляются, буквы приводятся
|
||||||
к нижнему регистру. Backend требует пароль не короче 12 символов и не длиннее
|
к нижнему регистру.
|
||||||
72 UTF-8 байтов.
|
|
||||||
|
|
||||||
**Известное расхождение:** сохранённое требование регистрации и проверка
|
Пароль при регистрации — от 8 до 72 печатных ASCII-символов: латинские
|
||||||
в форме frontend считают нижнюю границу в UTF-8 байтах, а backend — в символах.
|
буквы, цифры, спецсимволы и пробел. Кириллица, emoji, другие не-ASCII и
|
||||||
Не-ASCII пароль может пройти форму и получить отказ API. Это не принятое
|
управляющие символы отклоняются. Пароль не обрезается и не нормализуется, а
|
||||||
изменение password policy; требуется отдельное согласованное решение
|
обязательных классов символов нет. Верхняя граница вытекает из bcrypt, который
|
||||||
о проверке пароля и подтверждение полного HTTP-потока.
|
учитывает только первые 72 байта: для ASCII символ равен байту, поэтому
|
||||||
|
длинный пароль не обрезается молча. Frontend и backend проверяют одну и ту же
|
||||||
|
политику.
|
||||||
|
|
||||||
|
При входе проверяется только то, что пароль непустой и не длиннее 72 UTF-8
|
||||||
|
байтов. Минимум и набор символов не применяются, чтобы пользователь,
|
||||||
|
зарегистрированный по прежним правилам (в том числе с не-ASCII паролем), мог
|
||||||
|
войти. Невалидный пароль получает `400` с кодом `VALIDATION_ERROR`.
|
||||||
|
|
||||||
Access token действует 15 минут и хранится только в памяти браузера.
|
Access token действует 15 минут и хранится только в памяти браузера.
|
||||||
Refresh token имеет серверный срок 7 дней, заменяется при восстановлении
|
Refresh token имеет серверный срок 7 дней, заменяется при восстановлении
|
||||||
|
|||||||
Reference in New Issue
Block a user