Наш заказчик - крупная международная металлургическая и горнодобывающая компания. В компании множество внутренних ресурсов и сервисов, обеспечивающих работу в компании. Например, корпоративный портал на базе Microsoft SharePoint, корпоративное мобильное приложение, SAP и многое другое.
В каждой корпоративной системе свой способ входа:
С каждым годом внутренних сервисов в компании становится всё больше. Во время работы пользователя эти системы часто обмениваются данными друг с другом. Поэтому заказчику был нужен единый сервис аутентификации, которому будут доверять все внутренние системы и который будет знать про всех сотрудников– именно такую задачу и поставили перед разработчиками «Технологики».
У нас уже был опыт реализации модулей аутентификации для отдельных приложений, где для этого использовался open source продукт Identity Server. Поэтому новый сервер аутентификации мы решили разрабатывать на базе этого же продукта.
Выбор пал на него в первую очередь потому, что он поддерживает современные протоколы аутентификации – OAuth 2.0 и Open ID Connect, а также разработан на .Net Core. Кроме того, он обладает расширяемой архитектурой.
Кроме базовых возможностей сервера аутентификации, сервис должен уметь работать с разными источниками информации о пользователях, а также поддерживать двухфакторную аутентификацию.
Что касается серверной архитектуры, было решено использовать отдельные экземпляры серверов аутентификации в разных регионах, которые будут объединены в «ферму», поскольку у заказчика множество предприятий по всей России.
Таким образом, пользователь, который начал процесс аутентификации, например, на московском сервере, сможет без проблем отправить подтверждающий код из СМС уральскому серверу, если московский сервер стал недоступен.
Все клиентские приложения, которые работают с сервером аутентификации, мы снабдили «умными» модулями аутентификации – они умеют определять, какой сервер для них ближайший, динамически отслеживать активность серверов и оперативно переключаться на другой сервер, а также «узнавать» о появлении нового сервера в ферме, даже если на момент разработки клиентского приложения он ещё не был введён в эксплуатацию.
На настоящий момент проект сдан и работает, позволяя пользователям заказчика легко логиниться в корпоративные системы.