Настройка интеграции
Примечание
Данное описание настройки интеграции составлено на примере веб-интерфейса администратора Keycloak версии 21.1.2.
Настройка интеграции CTS и Keycloack включает в себя следующие процедуры:
- создание client scope;
- настройка маппинга полей;
- создание client;
- настройка отображение формы авторизации Keycloak;
- настройка авторизацию по QR-коду.
Создание 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:
- В веб-интерфейсе администратора Keycloak перейдите в раздел "Client scopes".
-
Нажмите на кнопку Create client scope и задайте следующие значения:
Параметр Значение Name Название сlient scope. Например, "express-scopes" Description Оставить незаполненным Type None Display on consent screen On Consent screen text Оставить незаполненным Include in token scope On Display Order Оставить незаполненным -
Нажмите Save.
Настройка маппинга полей
Для добавления маппинга полей типа "User Property":
- В созданном сlient scope "express-scopes" выберите вкладку Mappers.
-
Нажмите на кнопку Configure a new mapper:
-
В открышемся окне выберите пункт User Property и задайте значения, представленные в таблицах ниже.
Для атрибута "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 -
Нажмите Save.
Для добавления маппинга полей типа "User attribute":
- В созданном сlient scope "express-scopes" выберите вкладку Mappers.
- Нажмите на меню Add mapper и выберите пункт Configure a new mapper.
-
В открышемся окне выберите пункт User Attribute и задайте значения, представленные в таблицах ниже.
Для атрибута "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 -
Нажмите Save.
Создание client
- В веб-интерфейсе администратора Keycloak перейдите в раздел "Clients".
- Нажмите на кнопку Create client.
-
В открывшемся окне задайте следующие значения:
Параметр Значение Client type OpenID Connect Client ID Идентификационный номер клиента, например "express-adintegration" Name CTS integration Description Оставить незаполненым Always display in UI Off -
Нажмите на кнопку Next.
-
В открывшемся окне задайте следующие значения:
Параметр Значение Client authentication OpenID Connect Authorization Оставить незаполненым Authentication flow Установите флаги: - "Standard flow";
- "Direct access grants";
- "Service accounts roles";
- "OIDC CIBA Grant"
-
Нажмите на кнопку 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 + -
Нажмите на кнопку Save.
- В веб-интерфейсе администратора Keycloak перейдите в раздел "Clients".
- Нажмите кнопку Add client scope.
- Выберите созданный ранее сlient scope "express-scopes".
- Нажмите на меню Add и выберите Default.
- Далее в окне "Client details" для scope "offline_access" выберите значение Default.
Настройка отображения формы авторизации Keycloak
- В веб-интерфейсе администратора Keycloak перейдите в разде "Realm settings".
- Выберите вкладку Security defenses.
-
В поле Content-Security-Policy укажите:
frame-src 'self'; frame-ancestors 'self' https://web.company.local file:; object-src 'none';
-
Нажмите на кнопку 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