О компоненте
Сервис IAM (Identity and Access Management) (услуга 1.13) — набор инструментов для аутентификации и авторизации пользователей в прикладных приложениях.
Компонент «Аутентификация Platform V IAM» отвечает за процессы аутентификации и включает в себя:
- IAM Proxy;
- IAM Keycloak.
IAM Proxy — реверсивный прокси-сервер, обеспечивающий аутентифицированный доступ к ресурсам. Может использоваться в качестве единой точки входа в защищенный контур предприятия. Через IAM Proxy проходит весь трафик, в том числе и до ресурсов, не требующих аутентификации.
Функции IAM Proxy:
- обогащение сессии параметрами аутентификации — конвертация аутентификационных данных в метаданные запроса;
- первичная аутентификация на основе ролей, получаемых из токена.
IAM Keycloak — провайдер идентификации на базе open-source версии Keycloak 16.1. Представляет собой хранилище учетных записей и информации о пользователях.
Функции IAM Keycloak:
- аутентификация пользователей;
- поддержка сценариев в рамках отраслевых протоколов OAuth 2.0 и OpenID Connect;
- хранение данных аутентификационных пользователей;
- администрирование учетных записей;
- работа с ЕСИА.
В процессах аутентификации задействованы компоненты IAM Proxy и IAM Keycloak
Основные способы аутентификации:
- веб: пользователи входят в систему под внутренними учетными записями прикладного сервиса. При определенных настройках пользователи смогут входить в систему под учетными записями ЕСИА или других информационных систем, интегрируемых с прикладным сервисом;
- мобильная: аутентификация пользователей в прикладных сервисах происходит через эндпойнты мобильных приложений. Как и в случае с веб-аутентификацией, этот способ предполагает возможность входа с помощью ЕСИА;
- back-to-back: способ аутентификации, применяемый в сценариях, когда вместо пользователя аутентификацию в прикладном сервисе проходит другое приложение.
Веб-аутентификация
Когда пользователь отправляет через браузер запрос в прикладной сервис, этот запрос попадает в IAM Proxy — шлюз безопасности, гарантирующий аутентификацию каждого проходящего через него запроса. Признак аутентификации определяется наличием сессионных данных в cookie
PLATFORM_SESSION
.Схема процесса веб-аутентификации представлена ниже.

Увеличить
IAM Proxy перенаправляет пользователя на аутентификацию в IAM Keycloak. Пользователи проходят аутентификацию по логину и паролю. При этом могут использоваться как внутренние учетные записи, так и внешние. Внешними поставщиками учетных записей могут быть ЕСИА и базы интегрируемых с сервисом приложений.
IAM Keycloak передает ключ для сессионных данных в cookie
PLATFORM_SESSION
и ссылкой на редирект в IAM Proxy с авторизационным кодом для завершения аутентификации. В Keycloak авторизационный код обменивается на id-, access- и refresh-токены JWT.После успешной аутентификации пользователя в запрос добавляется Access token, и этот запрос проксируется в прикладное приложение.
Если сессионные данные есть
Запрос проксируется в прикладное приложение, где проверяется наличие и валидность JWT-токена. Если JWT-токен прошел валидацию, он помещается в заголовок Authorization, а cookie
PLATFORM_SESSION
удаляются. В java-приложениях для валидации JWT-токена и проверки авторизации рекомендуется использовать сертифицированный Платформенный фильтр JWT. Фильтр входит в библиотеку Spring Security, предоставляющую механизмы построения систем аутентификации и авторизации. После проверки токена данные о пользователе из этого токена считаются валидными. Помимо JWT-токена, данные о пользователе могут быть получены из ЕСИА. Роль пользователя из IAM Keycloak/ЕСИА сопоставляется с привилегиями в Объединенном сервисе авторизации (ОСА).Подробнее об авторизации: «Авторизация в прикладном приложении».
Мобильная аутентификация
Схема процесса мобильной аутентификации представлена ниже.

Увеличить
Когда пользователь аутентифицируется в прикладном приложении, мобильное устройство отправляет в IAM Proxy запрос к ресурсу
mobile/auth
. Процесс аналогичен процессу веб-аутентификации, отличие в том, что через IAM Proxy запрос проксируется в IAM Keycloak с дополнительной областью доступа (scope): offline_access
. Пользователь может пройти аутентификацию по логину и паролю внутренней учетной записи или через ЕСИА. Мобильное устройство запоминает аутентификацию пользователя, последующий аутентифицированный доступ обеспечивает offline token.О настройке мобильной аутентификации см. в разделе Настройка проксирования.
Аутентификация через ЕСИА
В сценариях мобильной и веб-аутентификации у пользователей есть возможность выполнить вход через ЕСИА.
Схема процесса аутентификации через ЕСИА представлена ниже.

Увеличить
Если пользователь выбирает опцию аутентификации через ЕСИА, браузер отправляет запрос в IAM Keycloak, где формируется ссылка для аутентификации. Запрос от IAM Keycloak подписывается с помощью криптопровайдера и передается в ЕСИА с параметрами:
client_Id
— мнемоника: уникальный идентификатор сервиса в ЕСИА;redirect_uri
— ссылка, по которой происходит редирект пользователя;scope
— доступные области данных ЕСИА;client_secret
— сформированная подпись запроса.
При первой аутентификации запрашиваются права доступа, предоставив которые, пользователь перенаправляется по
redirect_uri
. В IAM Keycloak авторизационный код обменивается на access- и refresh-токены. Если пользователь связан с одной или несколькими организациями, в ключ organization
access-токена добавляется или информация о выбранной организации. Если пользователь входит в систему как физическое лицо, в ключ organization
устанавливается значение 0
. После этого аутентификация завершается аналогично сценарию веб-аутентификации (см. выше).Для аутентификации пользователей через ЕСИА потребуются предварительные настройки. Подробнее см. в разделе Аутентификация через ЕСИА.
Back-to-back аутентификация
Схема процесса back-to-back аутентификации представлена ниже.

Увеличить
О настройке back-to-back аутентификации см. в разделе Настройка проксирования.
Минимальная конфигурация Сервиса обеспечивает:
- один realm для Потребителя (один экземпляр IAM Proxy для обслуживания одного realm потребителя);
- количество потоков, обрабатывающих запросы к Keycloak (параметр
max-threads count
) — 10; - максимальное количество соединений с IAM Proxy (параметр
worker_connections
) — 4096; - максимальный размер запроса к IAM Proxy (параметр
client_max_body_size
) — 10M; - периодичность обновления конфигурации (обновление информации об URL проксируемых сервисов) IAM Proxy (параметр
rds.read_data_from_rds_time_in_sec
) — 10.
В демопримерах реализованы стандартные сценарии, демонстрирующие работу отдельных сервисов Платформы ГосТех. Отправка тестовых запросов в демопримерах позволит вам ознакомиться с функциями того или иного сервиса. Доступные демопримеры и описания реализованной в них функциональности представлены ниже.
Аутентификация
Аутентификация в прикладных приложениях с проверкой JWT токена и присвоением сессии уникального идентификатора
Создание локального JWT токена
Создание JWT токена с настраиваемым набором данных пользователя для аутентификации в прикладных приложениях
Получение данных в ЕСИА
Просмотр данных о пользователе из ЕСИА, полученных при аутентификации