Заказчик: платформа INSO — экосистема сервисов для разработчиков.
Идея: в каждом сервисе была своя регистрация: пользователи путались в паролях, а разработчики раз за разом писали одно и то же. Идея — один логин на все продукты, как кнопка «Войти через Google», только собственная.
Что умеет:
— вход по почте и паролю;
— вход через Google, GitHub, VK, Apple и Telegram;
— вход по отпечатку пальца, Face ID или аппаратному ключу — без пароля;
— двухфакторная защита с кодом из приложения и резервными кодами;
— вход по ссылке из письма, без пароля;
— защита от подбора пароля: ограничение попыток, блокировка, фильтрация одноразовых почт;
— панель администратора и интерфейс на 12 языках.
Что я сделал: спроектировал и разработал сервис целиком — серверную часть, страницы входа, панель администратора. Реализовал полноценный стандарт единого входа самостоятельно, без готовых решений, и написал инструкции по подключению для четырёх языков программирования.
Результат: пользователи входят один раз и пользуются всеми сервисами, новые продукты подключаются к авторизации за пару часов.
Технологии: Node.js, Express, TypeScript, Next.js, React, PostgreSQL, OpenID Connect, WebAuthn, OAuth 2.0.