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

Keycloak – это система идентификации и управления доступом, которая берет на себя всю работу с авторизацией и аутентификацией.

Для начала необходимо определиться с основными понятиями, которые будут использоваться при настройке Keycloak:

  • Realm (Область). Изолированное пространство. У каждого Realm свои пользователи, клиенты, роли и политики. У вас может быть один Realm для внутренних сотрудников, другой – для внешних клиентов.

  • User (Пользователь). Учётная запись пользователя, под которой он будет входить в систему.

  • Client (Клиент). Приложение (Infrascope), которое Keycloak будет использовать для аутентификации.

  • Group (Группа). Способ объединить пользователей для удобного управления правами.

Далее необходимо настроить Keycloak и добавить в него Infrascope в качестве приложения:

  1. Создайте Realm. Для этого перейдите на вкладку "Manage realms" на панели администратора и нажмите кнопку "Create realm". Заполните необходимые поля и нажмите "Create".

    infrascope administration 22

  2. Создайте User. Для этого перейдите на вкладку "Users" и нажмите кнопку "Add user". Заполните необходимые поля и нажмите "Create". Далее необходимо назначить новому пользователю пароль для входа. Для этого на открывшейся странице перейдите на вкладку "Credentials", нажмите на кнопку "Set password", установите пароль и повторите его. Оставьте параметр Temporary активным, чтобы новый пользователь сменил свой пароль после первой авторизации в системе.

    infrascope administration 23

    Пользователь должен быть добавлен в систему Infrascope.
  3. Создайте Client. Для этого перейдите на вкладку "Clients" и нажмите на кнопку "Create client". Заполните необходимые поля и нажмите "Save".

    infrascope administration 24

    infrascope administration 25

  4. Настройте атрибуты Role List. Для этого перейдите на вкладку Client scopes > role_list > Mappers > role_list, включите Single Role Attribute и нажмите "Save".

    infrascope administration 26

После настройки Keycloak необходимо получить метаданные для настройки Infrascope. Для этого перейдите на вкладку "Realm settings" и нажмите "SAML 2.0 Identity Provider Metadata". Будет скачан XML-файл с метаданными Keycloak.

Далее необходимо задать дополнительные конфигурации в Infrascope:

  1. Определите необходимые параметры в Infrascope.

    • Перейдите в раздел Администрирование > Настройка системы.

    • Откройте вкладку "Интеграции".

    • Нажмите кнопку arrow рядом с пунктом SAML Configuration.

    • Заполните следующие параметры, связанные с Keycloak:

Имя параметра

Значение

Пример значения

SAML ID сущности

Значение entityID из скачанного XML-файла

https://infrascope-sso-test.ngrsoftlab.ru:8443/realms/myrealm

SAML URL

entityID/protocol/saml/clients/(поле "IDP-Initiated SSO URL name" из настроек Client, см. рисунок Создание клиента) 

https://infrascope-sso-test.ngrsoftlab.ru:8443/realms/myrealm/protocol/saml/clients/25.1

SAML Logout URL

Значение Location из скачанного XML-файла

https://infrascope-sso-test.ngrsoftlab.ru:8443/realms/myrealm/protocol/saml

SAML Remote URL

Значение entityID из скачанного XML-файла

https://infrascope-sso-test.ngrsoftlab.ru:8443/realms/myrealm

SAML X509 Certf. Key

Значение X509Certificate из скачанного XML-файла

-----BEGIN CERTIFICATE -----
MIIEMjCCAxqgAwIBAgIUG2HXQgRMpy/pUehFqTqzw0YaelAwDQYJKoZIhvcNAQEFBQAwYTEsMCoGA1UECgwjS3JvbiBUZWxla29tdW5 pa2FzeW9uIEhpem1ldGxlcmkg QXMxFTATBgNVBAsMDE9uZUxvZ2luIElkUDEaMBgGA1UEAwwRT25lTG9naW4gQWNjhkQm6mlNsRnfCipDrtz1lqf2VKgc9g==
-----END CERTIFICATE-----

Конфигурация SAML:

infrascope administration 27

Скачанный XML-файл с метаданными Keycloak:

infrascope administration 28

  1. Добавьте TomcatCorsFilter в файл конфигурации tomcat.

После установки необходимой конфигурации вам нужно установить TomcatCorsFilter в конфигурации tomcat:

  • Откройте файл web.xml в следующем каталоге /u01/netright-tomcat/conf

  • Найдите часть TomcatCorsFilter и измените значение параметра cors.allowed.origins как показано ниже.

<filter-name>TomcatCorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>10.130.6.90,https://infrascope-sso-test.ngrsoftlab.ru:8443</param-value> </init-param>
Если не удалось настроить Keycloak так, чтобы он отправлял заголовок Origin, добавьте дополнительно null в <param-value>:
<param-value>null,10.130.6.90,https://infrascope-sso-test.ngrsoftlab.ru:8443>