В современном мире цифровых продуктов и сервисов задача надёжной и удобной аутентификации пользователей становится всё более критической. Когда компания объединяет несколько платформ или обслуживает разнородные продукты, важно иметь единую, гибкую и безопасную систему идентификации, которая позволит сохранить пользовательский опыт и повысит уровень защиты. Именно такую задачу пришлось решить после слияния компаний Vimcar и Avrios и появления нового бренда Shiftmove. Для реализации этой задумки была выбрана платформа FusionAuth, которая позволила объединить слой аутентификации и управлять им централизованно. До слияния Vimcar и Avrios функционировали как отдельные системы с собственными механизмами аутентификации и управления пользователями.
Vimcar специализировался на телематике и геолокации, а Avrios ориентировался на комплексное управление автопарками. Разные подходы к реализации входа в систему, различия в архитектуре и в способах управления правами пользователей создавали вызовы для объединения. При этом существовала ясная цель — предоставить пользователям возможность единого входа, позволяющего работать с обоими продуктами Shiftmove. Изначально Avrios использовал AWS Cognito как систему аутентификации. Она напрямую обрабатывала аутентификацию и выдавала JWT-токены, которые клиенты применяли для доступа к сервисам.
Также были реализованы интеграции с корпоративными решениями через SAML, а пользователи подразделялись на водителей и системных пользователей. В Vimcar напротив применялась внутренняя служба идентификации, выдавшая только непрозрачные токены (bearer tokens), а все права контролировались отдельно через сервис управления разрешениями. Обе системы имели разные подходы к хранению и управлению пользователями, что усложняло будущую интеграцию. После детального анализа различных решений команда Shiftmove выбрала FusionAuth как оптимальное решение, подходящее по функционалу, стоимости и возможностям интеграции. Решение было принято в пользу использования управляемого сервисного решения FusionAuth на их серверах, что обеспечивало безопасность, обновления и поддержку без необходимости поддерживать собственный хостинг и инфраструктуру.
Такой подход позволял сосредоточиться на развитии бизнеса, а не на технических деталях функционирования инфраструктуры идентификации. Ключевой особенностью стало определение модели данных пользователей. FusionAuth стал «источником правды» для базовых данных пользователя — имени, пароля и ключевых разрешений, таких как принадлежность к продукту. Более сложная и тонкая настройка прав, а также иные пользовательские данные продолжали храниться в продуктах Avrios и Vimcar. Это решение обеспечило гибкость, позволяя расширять систему с появлением новых продуктов и функционала без необходимости крупной перестройки уже работающей инфраструктуры.
Технически для каждого окружения — тестового, промежуточного и продуктивного — был создан отдельный экземпляр FusionAuth. Все пользователи Shiftmove хранились в едином тенанте, а для разных продуктов создавались отдельные приложения в рамках платформы. Это позволило различать пользователей и управлять их доступом на уровне платформы, при этом сохраняя возможность объединения и расширения. Особое внимание было уделено автоматизации настройки и обновления FusionAuth с помощью Terraform, что сделало процесс развертывания управляемым и воспроизводимым. Включение Terraform в CI/CD пайплайны обеспечило высокое качество и стабильность обновлений, а локальная разработка с использованием Docker позволила инженерам эффективно тестировать изменения, не затрагивая продуктивные среды.
Вначале интеграции компания использовала временную архитектуру, где FusionAuth обрабатывал аутентификацию, но Avrios продолжал применять Cognito для управления доступом и выдачи токенов. Такой подход позволил ускорить запуск единого входа, взяв на себя часть технического долга, который затем успешно был погашен в ходе второй итерации проекта. Сейчас Cognito полностью заменён FusionAuth с использованием кастомных функций (Lambdas), которые обогащают токены необходимыми правами доступа непосредственно при их выдаче, улучшая производительность и упрощая архитектуру. На стороне Vimcar интерфейс остался прежним — Identity сервис продолжает использовать FusionAuth для аутентификации, но при этом выпускает собственные bearer-токены с запросами на проверку прав у внутреннего сервиса. Для пользователей фронтенда изменений фактически не произошло, что позволило обеспечить плавный переход без вмешательства в пользовательский опыт.
Переход на единую систему аутентификации сопровождался поэтапной миграцией пользователей с обоих продуктов. Для Vimcar была реализована мягкая миграция с постепенным переходом через bulk-импорт, активацию новых фич и мониторинг активности. У Avrios, в силу более сложной архитектуры и необходимости поддерживать корпоративные SSO, миграция прошла с коротким периодом недоступности, включающим экспорт и импорт пользователей с учетом конфликтов и объединения профилей, а также адаптацию бизнес-приложений к новой системе идентификации. Одним из важных аспектов оказалась возможность отката изменений с помощью флагов функций (feature flags), что помогло минимизировать риски и сохранить стабильность бизнес-процессов. К счастью, проблем с откатом не возникло, поскольку миграция прошла гладко, и команда Shiftmove получила подтверждение правильности выбранного направления.
Безопасность стала одним из основополагающих преимуществ перехода на FusionAuth. С момента запуска были внедрены разные механизмы повышения защиты. В частности, реализована многофакторная аутентификация через email и приложения-аутентификаторы — с акцентом на отказ от менее безопасных SMS. Появилась возможность обязательного применения MFA для определённых групп пользователей, особенно внутренних администраторов. Система также интегрировалась с социальными провайдерами Google и Apple, корпоративными сервисами Okta и поддерживает современные методы аутентификации, такие как passkeys.
Важной функциональностью стала защита от атак с помощью обнаружения утечек паролей с возможностью уведомления пользователей и обязательной смены пароля. Также внедрена поддержка безпарольного входа с помощью магических ссылок, что упрощает и ускоряет процесс авторизации, повышая удобство для конечных пользователей. Тем не менее путь к такой интеграции не обошёлся без трудностей. Наиболее сложным оказался опыт работы с фронтенд-шаблонами FusionAuth на базе FreeMarker. Отсутствие подробной документации и примеров, сложность интеграции с современными инструментами разработки и медленный цикл обратной связи требовали дополнительного времени от инженеров.
Несмотря на это, полученный уровень безопасности и производительности оправдал вложенные усилия. Ранние проблемы с Terraform тоже были заметны из-за разделения инфраструктуры, что приводило к временному рассогласованию состояния и частым ошибкам при развертывании. Тем не менее внедрение CI/CD и лучшие практики управляемого деплоя уменьшили эти риски. Наконец, ограничения на использование пользовательских доменов FusionAuth вызвали необходимость пересмотра планов. Изначальная конфигурация позволяла использовать только один основной домен, что усложнило создание полноценных тестовых и стейджинг-сред.
Подводя итог, опыт компании Shiftmove демонстрирует, как грамотное применение мощной платформы идентификации, такой как FusionAuth, позволяет объединить разнородные продукты под единой системой аутентификации, обеспечивая масштабируемость, безопасность и удобство пользователей. Благодаря поэтапному подходу, гибкой архитектуре и акценту на автоматизацию и безопасность компания сумела успешно провести миграцию, минимизируя риски и закладывая технологическую основу для будущего развития. Shiftmove продолжает расширять свой портфель продуктов, а единый слой аутентификации останется ключевым элементом их архитектуры, обеспечивая рост и доверие клиентов в долгосрочной перспективе.