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

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

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


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

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

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

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

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

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

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

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

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

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

Valid redirect URLs для Client

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

Вкладка Role mapping

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

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

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

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

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

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

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

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

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

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

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

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