Интеграция с Keycloak при помощи OIDC
OpenID Connect – это механизм идентификации пользователя, созданный на основе протокола OAuth 2.0, который обеспечивает современный безопасный и интуитивно понятный единый вход (SSO) для конечных пользователей, использующих Keycloak как стороннего поставщика.
Требуемая роль: admin.
Настройка соединения
Чтобы создать соединение OpenID, выполните следующие шаги:
- Перейдите в Single Sign-On (SSO) → Настройка OIDC.
- Нажмите Создать и заполните поля.
- Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.
Поля формы Соединение 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. |
Активно | Нет | Установите флажок, чтобы активировать запись соединения.
|
Включить создание пользователей | Нет | Установите флажок, чтобы автоматически создавались учетные записи пользователей, не зарегистрированных в системе 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. |
JSON | JSON, который содержит информацию о публичном сертификате. |
Алгоритм обновления
После запуска процесса обновления сертификатов, происходит следующее:
- Отправляется GET запрос /certs на основании значений полей URL IdP и Пространства.
- В зависимости от значения поля kid:
- добавляются новые сертификаты.
- существующие не обновляются.
- удаляются те сертификаты, которых нет в ответе запроса. Удаленные записи хранятся в Журнале удаления записей.
Если значения полей соединения OIDC установлены неверно, система выведет сообщение:
Не удалось обновить сертификаты. Проверьте настройки соединения.
Проверьте настройки и повторите попытку.
При удалении записи Соединения OIDC проверяется наличие записи с похожими параметрами URL IdP и Пространство. Если похожей записи нет, связанные сертификаты удаляются.