Интеграция с KeyCloak
Last updated
Was this helpful?
Last updated
Was this helpful?
В данном руководстве предполагается, что 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.