Skip to Content

Интеграция с KeyCloak

В данном руководстве предполагается, что KeyCloak-сервер уже развернут и настроен.

Во флаговый энум типов авторизации (параметр Auth:Type конфигурационного файла WebApi) добавились значения KeyCloak1* = 8 и KeyCloak2** = 16.
При наличии этого флага на форме авторизации отобразится кнопка Войти с учетной записью KeyCloak. Использовать одновременно оба флага не рекомендуется.
Сначала потребуется создать Realm – для этого нужно войти в Administration Console на главной странице KeyCloak (рисунок 1) с правами администратора (рисунок 2):

* - Сокращенный флоу
** - Полный флоу с PKCE

Рисунок 1 – Главная страница KeyCloak

alt

Рисунок 2 – Форма авторизации в Administration Console

alt

Нажимаем кнопку Create Realm и вводим параметры нового Realm:

alt

alt

После создания нового Realm система автоматически переключит на него:

alt

Этот параметр будет использоваться при настройке конфигурационного файла службы WebApi:

alt

Далее создаем Client – переходим на форму Clients со списком клиентов и нажимаем кнопку Create Client:

alt

В мастере создания Client на первом шаге задаем ClientID, Name и Description:

alt

Параметр ClientID будет использоваться при настройке конфигурационного файла службы WebApi:

alt

В мастере создания Client на втором шаге включается Client authentication и Authorization, остальные по умолчанию:

alt

На вкладке Credentials у созданного Client нужно скопировать значение параметра Client secret, зашифровать его утилитой шифрования паролей и добавить в конфигурационный файл службы WebApi:

Копирование Client secret

alt

Шифрование Client secret утилитой Primo.Orchestrator.PasswordEncryptor

alt

ClientSecret в конфигурационном файле службы WebApi

alt

Для типа авторизации KeyCloak2 = 16 нужно в конфигурационном файле WebApi настроить (только IP и порт) RedirectUrl, и скопировать его в Valid redirect URLs для Client:

Настройка RedirectUrl в конфигурационном файле службы WebApi

alt

Valid redirect URLs для Client

alt

Встроенной учетной записи, ассоциированной с Client – service-account-orch – надо добавить роль для разрешения управления Realm. Открыть вкладку Users, выбрать пользователя service-account-orch, открыть вкладку Role mapping и установить фильтр Filter by clients и выбрать роль «manage-realm»:

Вкладка Users

alt

Вкладка Role mapping

alt

Выбор роли «manage-realm»

alt

Далее нужно настроить роли пользователей, которые будут использованы для сопоставления с ролями Оркестратора. Переходим на вкладку Realm roles:

alt

Добавляем роли с префиксом «orch-», чтобы потом по нему производить поиск:

Добавление роли

alt

Список ролей, отфильтрованный по префиксу «orch-»

alt

Дальше создаем пользователей, которые будут авторизоваться в Оркестраторе. Переходим на вкладку Users:

alt

Создаем пользователя Оркестратора, сразу включаем Email verified:

alt

Устанавливаем созданному пользователю пароль. Переходим на вкладку Credentials:

alt

Назначаем пароль, сразу отмечаем его постоянным – отключаем Temporary:

alt

Ассоциируем пользователя с ранее созданными ролями для Оркестратора:

alt

Чтобы авторизация работала, необходимо, чтобы эти роли средствами Оркестратора были связаны с ролями Оркестратора:

alt

В конфигурационном файле службы WebApi прописываем URL-адрес:порт KeyCloak-сервера:

alt

Если задан СonfigurationUrl, то AuthUrl, TokenUrl и LogoutUrl заполняются на основе ответа этого эндпоинта, и их можно оставить пустыми/удалить из конфигурационного файла службы WebApi.