38 lines
3.2 KiB
Markdown
38 lines
3.2 KiB
Markdown
# ADR-005: Сброс пароля по email отложен до v0.1.0
|
||
|
||
Статус: принято.
|
||
|
||
## Контекст
|
||
Ссылка «Забыли пароль?» на странице входа (сброс пароля по email-токену,
|
||
аналогично подтверждению регистрации, со страницей задания нового пароля)
|
||
рассматривалась для релиза v0.0.1. Инфраструктура писем есть
|
||
(`services/email.py`, верификация регистрации), но полный флоу сброса
|
||
требует: новый тип одноразового токена и его хранение/инвалидацию, публичный
|
||
эндпоинт запроса сброса с rate limit и единообразным ответом (защита от
|
||
перебора email), эндпоинт применения токена, новую страницу фронтенда, отзыв
|
||
активных refresh-сессий, тесты на всё перечисленное. Это заметный
|
||
security-чувствительный объём непосредственно перед тегом v0.0.1.
|
||
|
||
## Решение
|
||
1. В релиз v0.0.1 входит только смена пароля в профиле с проверкой текущего пароля.
|
||
2. Сброс пароля по email откладывается до v0.1.0 (вместе с релизом записи
|
||
конференций либо ранее отдельным патчем).
|
||
3. Вариант «смена пароля на странице login без проверки старого пароля»
|
||
отвергнут как небезопасный.
|
||
4. Операционный обходной путь для забытого пароля в v0.0.1: пользователь
|
||
обращается к администратору; администратор создаёт пользователей сам и
|
||
знает выданный пароль. Возможность админа задать новый пароль
|
||
существующему пользователю в скоуп не добавляется — при необходимости
|
||
решается отдельно.
|
||
5. Страница login не меняется: ссылку «Забыли пароль?» не добавляем, чтобы
|
||
не обещать отсутствующую функцию.
|
||
|
||
## Последствия
|
||
- Плюс: минимальный дифф перед тегом, нет спешной реализации
|
||
security-чувствительного публичного флоу.
|
||
- Минус: пользователь, забывший пароль, в v0.0.1 зависит от администратора.
|
||
- Требования к будущей реализации (v0.1.0): одноразовый токен с TTL,
|
||
хэш токена в хранилище (не сам токен), rate limit и uniform-ответ
|
||
«письмо отправлено, если адрес зарегистрирован», отзыв refresh-токенов
|
||
после смены пароля.
|