Свой сервер OTP
Достаточно давно появилось желание завести свой сервер одноразовых паролей. Искал, не особо торопливо, как обычно. Отчасти потому, что еще немногие серверы поддерживали такой механизм аутентификации. Да и данных, которые нужно защищать было немного. Позже появились сервисы типа госуслуг, в почте стало храниться больше «чувствительных» данных, стало необходимо ограничить доступ к некоторым функциям своего сервера... В общем, причин накопилось достаточно. Про сервер OTP (One Time Password) стал вспоминать всё чаще и вот на днях мне попалась один простой, но в тоже время достаточно функциональный сервер 2FAuth.
Как пишет автор, он создал его потому, что:
Я хотел, чтобы мои учетные записи 2FA хранились в отдельной базе данных и я мог легко создавать и восстанавливать ее резервные копии.
Я ненавижу доставать свой смартфон, чтобы получить OTP, когда пользуюсь настольным компьютером.
Я люблю программировать и люблю самостоятельные решения.
Какие есть «плюсы» данного решения:
- возможность регистрации новых пользователей. Кто-то отнесет ее к «минусам», я не вижу ничего плохого. Можно отключить в настройках.
- Восстановление пароля от своей учетной записи, используемой для входа. Не проверял.
- Возможность импорта и экспорта данных.
- Возможность загрузки QR-кода из файла.
- Возможность ручного ввода данных (сервис, учетная запись, секретный шифр).
- Поддержка TOTP, HOTP, Steam, WebAuthn.
- Загрузка логотипов. Мелочь, а приятно.
- Поддержка SQLite, MariaDB, MySQL, PostgreSQL и SQL Server (внезапно).
- Присутствует REST API (снова сюрприз).
- Есть темная тема.
Пройдемся по «минусам»:
- Отсутствует приложение для мобильных телефонов, только веб-страница.
- Нет поддержки кодов, генерируемых Яндексом. То есть у вас не получится запихать в сервис OTP от Яндекса. Ну тут «на любителя».
- На мой непрофессиональный взгляд слишком много файлов находится в папке.
Теперь немного скриншотов:








