Files
vidconf/docs/architecture/adr/005-password-reset-deferred.md

38 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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-токенов
после смены пароля.