Сайт создаёт одноразовый QR-токен с ограниченным сроком жизни.
Вход без лишнего пароля. Подтверждение — через доверенное устройство.
Kalen Auth демонстрирует современную схему авторизации: пользователь входит на сайте, подтверждает QR-сессию в мобильном приложении, а критичные действия контролируются через trusted device, TOTP и журнал безопасности.
Мобильное приложение подтверждает вход только с привязанного устройства.
События входа, отзыва устройств и ошибок фиксируются в журнале.
Два сценария входа под разные риски
Быстрый вход подходит для короткого просмотра. Полный вход требует TOTP-код из приложения и выдаёт полноценную сессию.
Быстрый QR-вход
Пользователь сканирует QR в приложении и получает короткую web-сессию. Такой режим не должен позволять управлять устройствами или выполнять критичные действия.
- короткий срок жизни
- без refresh token
- ограниченные действия
Полный QR-вход + TOTP
После скана приложение показывает TOTP-код, а сайт принимает его в отдельном поле. Это делает демонстрацию понятной: телефон — источник подтверждения, сайт — точка входа.
- trusted device
- TOTP-подтверждение
- полноценная сессия
Профиль теперь не просто страница, а панель контроля
В профиле видны режим текущей сессии, доверенные устройства и события безопасности. Потерянный телефон можно отозвать, а подозрительные действия — проверить в активности.
Что реализовано в проекте
Это не просто красивая оболочка. Внутри уже есть связка web + backend + mobile app + база данных.
QR-вход
Сайт создаёт QR-сессию, приложение сканирует токен и подтверждает вход.
Быстрый режим
Короткая сессия на 5 минут для безопасного ограниченного доступа.
Полный режим
Подтверждение через TOTP-код, который генерируется доверенным устройством.
Доверенные устройства
Устройства привязываются к пользователю и могут быть отозваны в профиле.
Журнал событий
Auth logs фиксируют входы, QR-события, ошибки и отзыв устройств.
Готовность к развитию
Архитектура допускает Passkey, WebAuthn, push-confirmation и риск-скоринг.
Тестовая зона действий
Форум оставлен как проверочная область: здесь удобно демонстрировать, что quick/full-сессии могут иметь разные права.