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