feat(auth): сервис аккаунтов и аутентификации Фазы 1
- регистрация: политика пароля (≥10 + локальный словарь 10k утечек, SecLists MIT), username и email без учёта регистра, шифрование email с привязкой к аккаунту, blind index для поиска, автовступление в главный сервер с ролью @user - вход: Argon2id+pepper, TOTP при включённом 2FA, блокировка после серии неудач, события безопасности; единый ответ на неверный пароль и неизвестный аккаунт - сессии: opaque-токены (в БД только SHA-256), ротация токена, logout/logout-all, отзыв остальных сессий при смене пароля, step-up с окном 10 минут - 2FA: настройка секрета с QR-URL, подтверждение кодом, 8 резервных кодов (хранятся хэшами), обязательность для инстанс-админов, запрет отключения - тесты на реальной SQLite: регистрация/вход/дубликаты, слабые и утёкшие пароли, ротация и logout-all, TOTP и резервные коды, step-up, смена пароля, выключенная регистрация, отсутствие секретов в логах
This commit is contained in:
@@ -107,6 +107,11 @@ linters:
|
||||
- gosec
|
||||
- errcheck
|
||||
- forbidigo
|
||||
# В тестах пропуски результатов и вспомогательные
|
||||
# переменные мешают читаемости сильнее, чем помогают.
|
||||
- dogsled
|
||||
- prealloc
|
||||
- unparam
|
||||
# store: идентификаторы Snowflake заведомо < MaxInt64 (преобразования
|
||||
# документированы в idToInt/intToID), SQL собирается из константных
|
||||
# фрагментов шаблона, а значения всегда передаются параметрами.
|
||||
|
||||
Reference in New Issue
Block a user