Перейти к содержанию

Настройка интеграции

Примечание

Данное описание настройки интеграции составлено на примере веб-интерфейса администратора Keycloak версии 21.1.2.

Настройка интеграции CTS и Keycloack включает в себя следующие процедуры:

Создание client scope

Для интеграции CTS и Keycloak, необходимо сначала создать client scope и настроить маппинг полей:

  • username — обязательный параметр (в веб-интерфейсе администратора CTS указать соответствие "Имя пользователя" — "preferred_username");
  • user ID — обязательный параметр;
  • domain — обязательный параметр (в веб-интерфейсе администратора CTS указать соответствие "Домен" — "domain")
  • name — необязательный параметр;
  • public name — необязательный параметр;
  • company — необязательный параметр.

Дополнительные мапперы создаются опционально с типом "User Attribute" и привязываются к конечной точке "user-info".

Для создания client scope:

  1. В веб-интерфейсе администратора Keycloak перейдите в раздел "Client scopes".
  2. Нажмите на кнопку Create client scope и задайте следующие значения:

    Рисунок_1

    Параметр Значение
    Name Название сlient scope. Например, "express-scopes"
    Description Оставить незаполненным
    Type None
    Display on consent screen On
    Consent screen text Оставить незаполненным
    Include in token scope On
    Display Order Оставить незаполненным
  3. Нажмите Save.


Настройка маппинга полей

Для добавления маппинга полей типа "User Property":

  1. В созданном сlient scope "express-scopes" выберите вкладку Mappers.
  2. Нажмите на кнопку Configure a new mapper:

    Рисунок_2

  3. В открышемся окне выберите пункт User Property и задайте значения, представленные в таблицах ниже.

    Рисунок_3

    Для атрибута "Username":

    Параметр Значение
    Mapper type User Property
    Name username
    Property username
    Token Claim Name preferred_username
    Claim JSON Type String
    Add to ID token On
    Add to access token On
    Add to userinfo On

    Для атрибута "User ID":

    Параметр Значение
    Mapper type User Property
    Name User ID
    Property id
    Token Claim Name user_id
    Claim JSON Type String
    Add to ID token On
    Add to access token On
    Add to userinfo On
  4. Нажмите Save.

Для добавления маппинга полей типа "User attribute":

  1. В созданном сlient scope "express-scopes" выберите вкладку Mappers.
  2. Нажмите на меню Add mapper и выберите пункт Configure a new mapper.
  3. В открышемся окне выберите пункт User Attribute и задайте значения, представленные в таблицах ниже.

    Рисунок_4

    Для атрибута "Domain":

    Параметр Значение
    Mapper type User Attribute
    Name Domain
    User Attribute domain
    Token Claim Name domain
    Claim JSON Type String
    Add to ID token Off
    Add to access token Off
    Add to userinfo On
    Multivalued Off
    Aggregate attribute values Off

    Для атрибута "Name":

    Параметр Значение
    Mapper type User Attribute
    Name Name
    User Attribute name
    Token Claim Name name
    Claim JSON Type String
    Add to ID token Off
    Add to access token Off
    Add to userinfo On
    Multivalued Off
    Aggregate attribute values Off

    Для атрибута "Public name":

    Параметр Значение
    Mapper type User Attribute
    Name Public name
    User Attribute public_name
    Token Claim Name public_name
    Claim JSON Type String
    Add to ID token Off
    Add to access token Off
    Add to userinfo On
    Multivalued Off
    Aggregate attribute values Off

    Для атрибута "Company":

    Параметр Значение
    Mapper type User Attribute
    Name Company
    User Attribute company
    Token Claim Name company
    Claim JSON Type String
    Add to ID token Off
    Add to access token Off
    Add to userinfo On
    Multivalued Off
    Aggregate attribute values Off
  4. Нажмите Save.


Создание client

  1. В веб-интерфейсе администратора Keycloak перейдите в раздел "Clients".
  2. Нажмите на кнопку Create client.
  3. В открывшемся окне задайте следующие значения:

    Рисунок_5

    Параметр Значение
    Client type OpenID Connect
    Client ID Идентификационный номер клиента, например "express-adintegration"
    Name CTS integration
    Description Оставить незаполненым
    Always display in UI Off
  4. Нажмите на кнопку Next.

  5. В открывшемся окне задайте следующие значения:

    Параметр Значение
    Client authentication OpenID Connect
    Authorization Оставить незаполненым
    Authentication flow Установите флаги:
    • "Standard flow";
    • "Direct access grants";
    • "Service accounts roles";
    • "OIDC CIBA Grant"
  6. Нажмите на кнопку Next.

    Параметр Значение
    Root URL Оставить незаполненым
    Home URL Оставить незаполненым
    Valid redirect URIs https://cts.company.local/api/v1/ad_integration/openid/success* (адрес cts.company.local необходимо заменить на адрес своего CTS / CTS BACK)
    Valid post logout redirect URIs +
    Web origins +
  7. Нажмите на кнопку Save.

  8. В веб-интерфейсе администратора Keycloak перейдите в раздел "Clients".
  9. Нажмите кнопку Add client scope.
  10. Выберите созданный ранее сlient scope "express-scopes".
  11. Нажмите на меню Add и выберите Default.
  12. Далее в окне "Client details" для scope "offline_access" выберите значение Default.


Настройка отображения формы авторизации Keycloak

  1. В веб-интерфейсе администратора Keycloak перейдите в разде "Realm settings".
  2. Выберите вкладку Security defenses.
  3. В поле Content-Security-Policy укажите:

    frame-src 'self'; frame-ancestors 'self' https://web.company.local file:; object-src 'none';
    
  4. Нажмите на кнопку Save.


Настройка авторизации по QR-коду

Для включения авторизации на CTS-сервере по QR-коду в командной строке в строке запуска сервера Keycloak добавить:

--spi-ciba-auth-channel-ciba-http-auth-channel-http-authentication-channel-uri=https://ru.public.express/api/v1/authentication/openid/ciba/callback

Для включения авторизации на ETS-сервер по QR-коду в командной строке запуска в строке сервера Keycloak добавить:

--spi-ciba-auth-channel-ciba-http-auth-channel-http-authentication-channel-uri=https://ets.corp.lan/api/v1/authentication/openid/ciba/callback