Ключевые слова: программный модуль, сквозная аутентификация, технология единого входа, микросервисные приложения.
Микросервисная архитектура набирает большую популярность за последнее время и представляет собой подход к разработке программного обеспечения, при котором большие приложения разбиваются на небольшие автономные модули, которые разрабатываются и развертываются независимо друг от друга. Использование данного подхода представляет сложность в обеспечении безопасности доступа к различным сервисам через общую систему аутентификации и авторизации. Пользователям необходимо проходить процедуру аутентификации и авторизации в каждом сервисе отдельно, что является неэффективным и затратным [1].
В традиционной монолитной архитектуре аутентификация и авторизация осуществляется централизованно на уровне приложения. В контексте микросервисной архитектуры, каждый сервис является отдельным автономным приложением, что усложняет управление аутентификацией и авторизацией. Для решения данной проблемы вводится сквозная аутентификация на основе технологии единого входа (SSO), которая позволяет пользователю войти в систему только один раз и автоматически получить доступ к различным сервисам, не вводя повторно учетные данные.
Данная проблема является важной, так как существует повышенный спрос на обеспечение безопасности в сфере информационного обмена, в связи с распространением множества приложений и сервисов, которые необходимо аутентифицировать. Это вызвано не только требованием защиты от различных угроз, таких как несанкционированный доступ к ресурсам и данным, а также утечки конфиденциальной информации, но и ростом количества систем, использующих микросервисную архитектуру. В настоящее время данная архитектура становится все более популярной, что усиливает потребность в эффективных средствах аутентификации пользователей и сервисов, работающих в различных системах. Программный модуль сквозной аутентификации на основе SSO позволит решить данную проблему и повысить уровень безопасности в области сетевого взаимодействия.
SSO — технология, которая позволяет пользователям аутентифицироваться только один раз для доступа к различным приложениям или сервисам, вместо того чтобы каждый раз вводить учетные данные. Когда пользователь входит в систему, SSO генерирует токен аутентификации, который сохраняется в хранилище токенов. При попытке доступа к другим приложениям или сервисам, они запрашивают у SSO токен аутентификации. Если токен действителен, то пользователь получает доступ к запрошенному ресурсу, без необходимости повторно вводить логин и пароль [2].
Реализацией данного программного модуля является отдельный сервис авторизации.
В качестве входных данных у программного модуля выступают:
- логин пользователя;
- пароль пользователя;
- секретные ключи client_id, client_secret которые создает ПМ для каждого клиентского приложения.
Client_id представляет собой уникальный идентификатор, выданный клиентскому приложению при его регистрации в ПМ. Данный ключ используется для идентификации приложения во время процесса аутентификации и авторизации.
Client_secret — секретный ключ, который выдается клиентскому приложению вместе с client_id. Данный ключ используется для подписи запросов, отправляемых с клиентского приложения на ПМ, и для проверки подписи ответов, получаемых от ПМ.
Использование client_id и client_secret обеспечивает безопасность процесса аутентификации и авторизации, так как клиентское приложение идентифицируется и авторизуется в ПМ перед получением доступа к ресурсам, защищенным с помощью SSO.
В качестве выходных данных у программного модуля выступают:
- access токен;
- refresh токен;
- срок жизни access токена.
Access токен — токен, который выдается после успешной аутентификации пользователя и который используется для авторизации доступа к ресурсам и сервисам, к которым пользователь имеет право доступа. Refresh токен — токен, который используется для обновления access токена после истечения его срока действия. Срок жизни access токена определяет время, в течение которого данный токен действителен.
Access и refresh токены создаются на основе протокола JWT, который применяется для обмена информацией между клиентом и сервером в формате, который безопасно хранится и передается в URL-адресах, POST-запросах или заголовках HTTP. JWT позволяет создавать токены, которые проверяются без дополнительной связи между клиентом и сервером [3].
Данные токены необходимы для обеспечения безопасности и авторизации доступа к ресурсам и сервисам. Access токен предоставляет доступ к ресурсам, которые запрошены пользователем при аутентификации, а refresh токен обновляет access токен после истечения его срока действия. Данные токены защищены от фальсификации и доступны только тому пользователю, который успешно аутентифицирован и авторизован.
Взаимодействие с программным модулем осуществляется посредством REST API. REST — стиль архитектуры, который применяется при построении распределенных систем. Данный стиль предлагает определенные ограничения для создания веб-сервисов, которые взаимодействуют друг с другом. В рамках REST API используются различные методы HTTP для выполнения запросов к сервисам, такие как GET, POST, PUT и DELETE [4].
ПМ предоставляет следующие REST API методы:
- регистрации пользователя;
- аутентификации пользователя;
- авторизации пользователя;
- метод обновления access токена по refresh токену.
Схема данных для программного модуля представлена на рис. 1.
Рис. 1. Схема данных программного модуля
Алгоритм работы программного модуля представлен на рис. 2.

Рис. 2. Алгоритм работы программного модуля
Использование программного модуля сквозной аутентификации на основе SSO является необходимым для обеспечения безопасности и авторизации доступа к ресурсам и сервисам, особенно в условиях растущего спроса на микросервисную архитектуру. Реализация данного модуля позволяет повысить уровень безопасности в области сетевого взаимодействия и упростить процесс аутентификации и авторизации пользователей в различных системах.
Литература:
- Authentication in microservices. URL. — Текст: электронный // Frontegg: [сайт]. — URL: https://frontegg.com/blog/authentication-in-microservices
- How Does Single Sign-On Work. — Текст: электронный // one-login by one identity: [сайт]. — URL: https://www.onelogin.com/learn/how-single-sign-on-works
- Безопасность JSON Web Tokens. — Текст: электронный // Cyber polygon URL: [сайт]. — URL: https://cyberpolygon.com/ru/materials/security-of-json-web-tokens-jwt/
- Rest API documentation. — Текст: электронный // IBM URL: [сайт]. — URL: https://www.ibm.com/docs/en/inventory-visibility?topic=apis-rest-api-documentation