SAML‑интеграция позволяет использовать Keycloak для аутентификации и автоматического создания внутренних и внешних пользователей в ELMA365.
В момент авторизации в ELMA365 будет создаваться новый внутренний пользователь, а запись о нём появится в справочнике Пользователи. Если авторизация происходит на портале, то запись о пользователе появится в системном справочнике Внешние пользователи.
Обратите внимание, чтобы незарегистрированный пользователь вошёл на портал через SAML, ему не нужно высылать индивидуальную ссылку-приглашение. Достаточно предоставить ему ссылку на страницу портала.
Перед началом настройки интеграции выполните установку Keycloak согласно официальной документации.
Для корректной работы требуется шифрованное соединение с сертификатами tls на серверах Keycloak и ELMA365.
Первоначальная настройка приложения SAML в Keycloak
- Откройте настройки Keycloak по адресу http://my_domen.com:8443, где:
- my_domen.com — адрес вашего сайта;
- :8443 — стандартный порт, используемый Keycloak при шифрованном соединении. Его можно изменить при конфигурировании рабочей среды.
- Перейдите в Administration Console. Для подтверждения действия введите логин и пароль от своей учётной записи.
- На открывшейся странице создайте новое окружение. Введите название окружения и нажмите кнопку Create.
- Из левого меню перейдите в раздел Realm setting. На вкладке General из поля Endpoints скопируйте ссылку на метаданные Keycloak для интеграции с SAML.
Настройка интеграции с SAML в ELMA365
- Перейдите в Администрирование > Модули > SAML.
- Поставьте флажок напротив опции Включить модуль и нажмите Добавить элемент.
- В открывшемся окне настроек провайдера заполните поля:
- Наименование* — название для интеграции;
- URL метаданных IdP* — URL метаданных вашего Keycloak сервера, который был получен при первоначальной настройке приложения SAML в Keycloak на шаге 4;
- Публичный ключ* — строковое представление вашего публичного ключа в .pem формате:
-----BEGIN CERTIFICATE-----
…
-----END CERTIFICATE-----
- Закрытый ключ* — строковое представление вашего закрытого ключа в .pem формате:
-----BEGIN PRIVATE KEY-----
…
-----END PRIVATE KEY-----
Для генерации публичного ключа и закрытого ключа используйте следующую команду в openssl:
openssl req -x509 -newkey rsa:2048 -keyout service.key -out service.cert -days 365 -nodes -subj "/CN=mydomain.pro"
Где mydomain.pro — ваше доменное имя keycloak.
Для последующей настройки интеграции вам потребуется импортировать публичный ключ в формате PKCS12. Для его экспорта используйте следующую команду:
openssl pkcs12 -export -out cert.p12 -in service.cert -inkey service.key -name learn
- Создавать пользователей в момент авторизации — установите параметр в значение Да, чтобы отсутствующие внешние или внутренние пользователи создавались автоматически при попытке авторизации пользователя в системе;
- Преобразовывать существующих пользователей — установите параметр в значение Да, если необходимо обновлять существующих пользователей в момент авторизации. При обновлении пользователь будет преобразован во внешнего SAML‑пользователя, при этом у него пропадёт возможность авторизации прежним способом;
- Обновлять данные существующих пользователей — установите параметр в значение Да, чтобы в момент аутентификации пользователя его данные в ELMA365 обновлялись на данные, полученные в SAML‑сообщении. Набор данных, которые отправляются в SAML‑сообщении, определяется при создании параметров на стороне провайдера аутентификации. Обратите внимание, если в SAML‑сообщении получены пустые значения, они также заменяют существующие данные пользователя в ELMA365;
- Использовать для пользователей — укажите, для кого будет возможна авторизация через SAML: для пользователей внешнего портала или для внутренних пользователей ELMA365.
- Нажмите Сохранить. После этого будет сгенерирована ссылка на файл метаданных, которая отобразится в поле URL метаданных.
- Перейдите по полученной ссылке и сохраните файл метаданных Service Provider в .xml формате. Он потребуется для финальной настройки SAML‑приложения на стороне Keycloak.
Финальная настройка приложения SAML в Keycloak
- Вернитесь в интерфейс настройки Keycloak и импортируйте клиента с помощью файла метаданных, полученных при настройке интеграции SAML в ELMA365 на шаге 5. Для этого из левого меню перейдите в раздел Clients и нажмите кнопку Import client. На отрывшейся странице загрузите файл метаданных с помощью кнопки Browse. После сохранения откроется окно настройки приложения.
- Перейдите на вкладку Keys и с помощью кнопки Import Key импортируйте хранилище ключей cert.p12, созданное при настройке интеграции SAML в ELMA365 на шаге 3. Укажите формат архивирования (в нашем примере это PKCS12), лэйбл, указанный после директивы -name при экспорте ключа, и пароль от хранилища.
- Для корректной работы интеграции на стороне Keycloak необходимо создать два обязательных для SAML‑параметра: windowsaccountname и externalCode. Если в настройках модуля SAML в ELMA365 включено обновление данных пользователей при аутентификации, добавленные параметры также определяют, какие данные будут обновляться.
Для добавления параметров перейдите из левого меню в раздел Clients и выберите созданное приложение. Затем откройте вкладку Client scopes и снова выберите созданное приложение.
- На открывшейся странице на вкладке Mappers нажмите кнопку Add predefined mapper. Из открывшегося списка выберите role_list.
- На вкладке Mappers нажмите кнопку Add mapper. Из списка выберите By configuration. В открывшемся модальном окне выберите User attributes.
- Создайте два параметра со следующими данными:
- для windowsaccountname:
- Name* — http://schemas.xmlsoap.org/ws/2005/05/identity/claims/windowsaccountname;
- User Attribute — windowsaccountname;
- SAML Attribute Name — http://schemas.xmlsoap.org/ws/2005/05/identity/claims/windowsaccountname;
- SAML Attribute NameFormat — URL Reference.
Параметр является обязательным. Атрибут будет сопоставлен с логином пользователя в ELMA365.
- для externalCode:
- Name* — http://schemas.xmlsoap.org/ws/2005/05/identity/claims/externalCode;
- User Attribute — externalCode;
- SAML Attribute Name — http://schemas.xmlsoap.org/ws/2005/05/identity/claims/externalCode;
- SAML Attribute NameFormat — URL Reference.
Параметр является обязательным. Используется для идентификации внешнего пользователя в ELMA365.
- Так как Keycloak будет являться поставщиком удостоверений, необходимо создать нового пользователя. Для этого из левого меню перейдите в раздел Users и создайте пользователя. Затем откройте вкладку Credentials и задайте для него пароль.
- На вкладке Attributes укажите значения для следующих атрибутов:
- externalCode — идентификатор пользователя, аналог objectGUID в ActiveDirectory;
- windowsaccountname — логин пользователя из интерфейса ELMA365.
Также укажите электронную почту и имя пользователя.
- Нажмите Save.