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

3.2 KiB
Raw Permalink Blame History

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-токенов после смены пароля.