Passkeys (WebAuthn)
Зачем
Passkey — это публично-приватная пара, привязанная к устройству. Phishing-resistant: нельзя «отдать» по фишинговой ссылке.
Регистрация
/app/security → Passkeys → Register. Браузер вызывает Touch ID / Face ID / Windows Hello / YubiKey. После — passkey сохраняется в keychain устройства и в backend (только публичный ключ).
Логин
На /login нажимаете «Войти через passkey» — браузер показывает usable credentials.
Anti-enumeration
При неизвестном email Unimoni всё равно возвращает discoverable challenge — браузер UX выглядит одинаково для существующих и несуществующих email.