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

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

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


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

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

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

ПолеОбязательноОписание
НаименованиеДаУкажите название соединения.
URL IdPДа

Укажите URL сервера Keycloak. Например: https://kk-your-instance.simpleone.ru/

Ссылка, перенаправляющая с экземпляра на авторизацию в Keycloak будет выглядеть следующим образом:

https:/{{keycloak_ur}}/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), по значениям которой будет происходить авторизация на экземпляре. Колонка содержит информацию для идентификации пользователя. Доступные варианты:

  • Электронная почта
  • Логин
Не учитывать регистрНет

Установите флажок, чтобы система игнорировала регистр значения логина и электронной почты при авторизации пользователей. 

  • Если флажок не установлен, а значение в свойстве simple.login.username.sensitivity.enabled установлено true, проверка происходит с учетом регистра.
    Однако Keycloak всегда возвращает данные в нижнем регистре. Если в системе существуют пользователи с адресами электронной почты, которые отличаются только регистром, Keycloak авторизует того, чья почта совпадает с возращенными данными.
    Например, в SimpleOne существует два пользователя с похожими адресами электронной почты:
    1. Ivanivanov@mail.ru
    2. ivaninavov@mail.ru
      Keycloak возвращает ivanivanov@mail.ru, поэтому авторизуется пользователь 2.
  • Если установлен флажок, и у свойства simple.login.username.sensitivity.enabled значение установлено true, при попытке авторизации ни один из пользователей не будет авторизован.
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. В поле задан скрипт по умолчанию, который соотносит два обязательных поля: электронную почту и логин.

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 и Пространство. Если похожей записи нет, связанные сертификаты удаляются.

  • No labels