Перейти к основному содержимому
Версия: 1.22.3

Интеграция с Keycloak при помощи OIDC

OpenID Connect – это механизм идентификации пользователя, созданный на основе протокола OAuth 2.0, который обеспечивает современный безопасный и интуитивно понятный единый вход (SSO) для конечных пользователей, использующих Keycloak как стороннего поставщика.

подсказка

Требуемая роль: admin.

Настройка соединения


Чтобы создать соединение OpenID, выполните следующие шаги:

  1. Перейдите в Single Sign-On (SSO) → Настройка OIDC.
  2. Нажмите Создать и заполните поля.
  3. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.

Поля формы Соединение OIDC

ПолеОбязательноОписание
НаименованиеДаУкажите название соединения.
URL IdPДаУкажите URL сервера Keycloak. Например: https://kk-your-instance.simpleone.ru/.
Ссылка, перенаправляющая с экземпляра на авторизацию в Keycloak будет выглядеть следующим образом: https://{{keycloak_url}}/realm/{{realm}}/protocol/{{protocol}}/auth?response_type=id_token&id_token={{token}}&client_id={{kk_client_id}}>&redirect_uri={{redirect_uri}}&scope={{scope}}&state={{state}}&nonce={{nonce}}
ПространствоДаУкажите пространство Keycloak.
КлиентДаУкажите зарегистрированное имя приложения в Keycloak.
Колонка пользователяДаУкажите колонку таблицы Пользователи (user), по значениям которой будет происходить авторизация на экземпляре. Колонка содержит информацию для идентификации пользователя. Доступные варианты:
  • Электронная почта
  • Логин
Не учитывать регистрНетУстановите флажок, чтобы система игнорировала регистр значения логина и электронной почты при авторизации пользователей.
URI для переадресацииДаУкажите ссылку обратного вызова. После авторизации пользователя в Keycloak, пользователь перенаправляется по указанной ссылке, к которой добавляются параметры: id_token, access_token, session_state, state, token_type, expires_in.
Пример обратной ссылки с Keycloak: https://{{redirect_uri}}#state={{state}}&session_state={{session_state}}&id_token={{id_token}}&access_token={{access_token}}&token_type=Bearer&expires_in={{expires_in}}
Любое изменение значения поля URI для переадресации в записи активного соединения перезаписывает значение свойства simple.welcome_page.url.
АктивноНетУстановите флажок, чтобы активировать запись соединения.
  • Только одно соединение может быть активно. После сохранения текущей записи с установленным флажком, прежняя активная запись соединения будет деактивирована.
  • Если у активированной записи флажок Активно снимается, значение системного свойства simple.welcome_page.url становится по умолчанию пустым.
Включить создание пользователейНетУстановите флажок, чтобы автоматически создавались учетные записи пользователей, не зарегистрированных в системе SimpleOne, но имеющих учетные записи в Keycloak.
СкриптДаУкажите скрипт для настройки соотношения полей пользователей между Keycloak и экземпляром SimpleOne. В поле задан скрипт по умолчанию, который соотносит два обязательных поля: электронную почту и логин.
внимание
  • Если флажок Не учитывать регистр не установлен, а значение в свойстве simple.login.username.sensitivity.enabled установлено true, проверка происходит с учетом регистра. Однако Keycloak всегда возвращает данные в нижнем регистре. Если в системе существуют пользователи с адресами электронной почты, которые отличаются только регистром, Keycloak авторизует того, чья почта совпадает с возращенными данными.

    Например, в SimpleOne существует два пользователя с похожими адресами электронной почты:

    • Ivanivanov@mail.ru
    • ivaninavov@mail.ru

    Keycloak возвращает ivanivanov@mail.ru, поэтому авторизуется пользователь 2.

  • Если флажок Не учитывать регистр установлен, и у свойства simple.login.username.sensitivity.enabled установлено значение true, при попытке авторизации ни один из пользователей не будет авторизован.

Keycloak и экземпляры SimpleOne должны иметь настроенные TLS/SSL сертификаты для подключения по порту 443.

Сертификаты IdP


Все созданные публичные сертификаты для соединений хранятся в таблице Сертификаты IdP (idp_certificate). Сертификаты с уникальными значениями URL IdP и Пространство отображаются в связанном списке для каждой отдельной записи Соединения OIDC.

Обновить сертификаты можно только для активного соединения OIDC одним из следующих способов:

  • Нажав кнопку Обновить сертификаты на форме Соединения OIDC.
  • При авторизации или регистрации пользователя. Если не был найден соответствующий сертификат, они обновляются автоматически.

Поля формы IdP Сертификат

ПолеОписание
kidУникальный ID ключа сертификата.
ПространствоНазвание пространства Keycloak.
JSONJSON, который содержит информацию о публичном сертификате.

Алгоритм обновления

После запуска процесса обновления сертификатов, происходит следующее:

  1. Отправляется GET запрос /certs на основании значений полей URL IdP и Пространства.
  2. В зависимости от значения поля kid:
    • добавляются новые сертификаты.
    • существующие не обновляются.
    • удаляются те сертификаты, которых нет в ответе запроса. Удаленные записи хранятся в Журнале удаления записей.

Если значения полей соединения OIDC установлены неверно, система выведет сообщение:

Не удалось обновить сертификаты. Проверьте настройки соединения.

Проверьте настройки и повторите попытку.

примечание

При удалении записи Соединения OIDC проверяется наличие записи с похожими параметрами URL IdP и Пространство. Если похожей записи нет, связанные сертификаты удаляются.