Если внешний Keycloak работает на недоверенном сертификате, то этот сертификат предварительно надо добавить в контейнеры платформы в доверенные
Экспортируйте пространство (realm) Visiology , используя “Настройки Realm->Действие->Partial export (Include groups and roles и Include clients)” в консоли keycloak платформы. Полученный json импортировать во внешний keycloak. Импорт частичный и может отличаться в зависимости от версий, поэтому необходимо убедиться в правильности полученных настроек, сравнив с оригинальными в платформе. Особенно обратите внимание на перенос Client scopes, наличие в них mapper c подобными настройками, а также настроек client scopes для всех клиентов c соответствующими assigned type. Роли и группы также должны соответствовать.
Для импортированных клиентов исправьте значения ROOT URL на URL внешнего keycloak. В поле Valid redirect URIs и Valid post logout redirect URIs добавьте запись http(s)://URL_ПЛАТФОРМЫ_VISIOLOGY3/*, а в поле Web origins поставьте +
Перегенерируйте секреты для клиентов visiology_m2m,
visiology_public_dashboard_access
, grafana в веб-интерфейсе внешнего keycloak.В файле
/var/lib/visiology/scripts/v3/external-keycloak.env
заполните данные для подключения к внешнему Keycloak.Пример файла с шаблонными значениями:
KEYCLOAK_EXTERNAL_REALM_PATH=<KEYCLOAK_URL>/realms/<VISIOLOGY_REALM> KEYCLOAK_INTERNAL_REALM_PATH=<KEYCLOAK_URL>/realms/<VISIOLOGY_REALM> KEYCLOAK_INTERNAL_TOKEN_ENDPOINT=<KEYCLOAK_URL>/realms/<VISIOLOGY_REALM>/protocol/openid-connect/token KEYCLOAK_INTERNAL_KEYCLOAK_ENDPOINT=<KEYCLOAK_URL> KEYCLOAK_EXTERNAL_KEYCLOAK_ENDPOINT=<KEYCLOAK_URL> # Cookie Authorization__CookieSameSite=None Authorization__CookieSecurePolicy=SameAsRequest # Metadata Authentication__Keycloak__RequireHttpsMetadata=false Authorization__RequireHttpsMetadata=false Authorization__BaseClient__ClientSecret=<KEYCLOAK_M2M_SECRET> Authorization__ClientSecret=<KEYCLOAK_M2M_SECRET> Authentication__Keycloak__ClientSecret=<KEYCLOAK_M2M_SECRET> Authorization__DashboardPublicAccessClient__ClientSecret=<KEYCLOAK_PUBLIC_DASHBOARD_ACCESS_SECRET>
где
KEYCLOAK_URL
- путь до KeycloakVISIOLOGY_REALM
- название Realm для платформы VisiologyKEYCLOAK_M2M_SECRET
- значение секрета от клиента visiology_m2m из внешнего Keycloak
KEYCLOAK_PUBLIC_DASHBOARD_ACCESS_SECRET
- значение секрета от клиентаvisiology_public_dashboard_access
из внешнего Keycloak
Вы можете не указывать секреты в открытом виде, а перегенерировать соответствующие в платформе. Секрет для grafana необходимо заменить в любом случае.
docker secret rm KEYCLOAK_M2M_SECRET \ echo -n "NEW-SECRET-FOR-M2M" | docker secret create -l visiology3_keycloak=kc_m2m_secret KEYCLOAK_M2M_SECRET - \ docker secret rm KEYCLOAK_PUBLIC_DASHBOARD_ACCESS_SECRET \ echo -n "NEW-SECRET-FOR-PUBLIC-ACCESS" | docker secret create -l visiology3_keycloak=kc_public_dashboard_access_secret KEYCLOAK_PUBLIC_DASHBOARD_ACCESS_SECRET - \ docker secret rm KEYCLOAK_GRAFANA_CLIENT_SECRET \ echo -n "NEW-SECRET-FOR-GRAFANA" | docker secret create -l visiology3_keycloak=kc_grafana_client_secret KEYCLOAK_GRAFANA_CLIENT_SECRET -
Остановить платформу, включить использование внешнего Keycloak, запустить платформу
/var/lib/visiology/scripts/run.sh --stop && \ /var/lib/visiology/scripts/v3/prepare-config.sh --ext-auth true && \ /var/lib/visiology/scripts/run.sh --start