Предусловие
Необходим установленный и настроенный Indeed AM IDP.
На текущий момент данная интеграция не поддерживает вход в ПК приложение.
Установка eXpress
Требования и документация eXpress: https://docs.express.ms/server-installation/general-information/description-of-components/
В PDF: https://express.ms/docs/
Для интеграции необходимо:
- Минимум 2 сервера eXpress: CTS и web-client (web-client должен быть в том же домене, что и KC и IDP, иначе возникнет ошибка на этапе аутентификации).
- 1 сервер KeyCloak
- 1 сервер IDP. Все они должны быть видны из сети, и на них должны быть валидные серты. Можно использовать Let’s Encrypt.
CTS - корпоративный сервер eXpress. Web-client - адрес, на который изначально заходят пользователи (по умолчанию https://corp.express - ходят все пользователи, чтобы пройти начальную регистрацию). Если использовать Web из другого домена, отличного от IDP, то в IDP возникнет ошибка, из-за того, что не передастся cookie с ID сессии.
Настройка KeyCloak + Indeed AM IDP (OIDC)
Интеграция KeyCloak и Indeed AM IDP производится по следующей инструкции: https://support.indeed-company.ru/Knowledgebase/Article/View/nastroika-oidc-na-primere-keycloak
На машине IDP добавляем Заголовок ответа HTTP в IIS:
- IIS > Default Web Site > am > idp - Заголовки ответов HTTP
- Добавляем заголовок с именем "Content-Security-Policy" со значением "frame-ancestors ‘self’ https://web-client.indeed.com file:"

- Перезапускаем пул IDP.
Настройка KeyCloak + eXpress
Заходим в панель администратора Keycloak:
- User federation - Add new provider - LDAP и настраиваем подключение к AD;
 
- Realm settings - Security defenses - Content-Security-Policy (указать необходимые адреса Web, как в IDP);

- Clients - Create client:
- Client ID: express
- Name: eXpress
- Always display in console: on
- Valid redirect URIs: https://cts_fqdn/api/v1/ad_integration/openid/success*
- Web origins: *
- Client authentication: ON
- Authorization: ON
- Authentication flow: Standard flow, Direct access grants
- Front channel logout: ON
- Backchannel logout session required: ON
- Во вкладке Credentials: Client Id and Secret, скопировать Client secret и вставить в админке CTS (глава “Настройка OpenId”)
  
- Client scopes - Create client scope:
- Name: express-cl
- Display on consent screen: ON
- Include in token scope: ON
- Вкладка Mappers (в созданном Client Scope), создать 2:
- Тип User Property
- Name: User ID
- Property: id
- Token Claim Name: user_id
- Claim JSON Type: String
- Add to userinfo: ON
- Тип User Attribute
- Name: Domain
- User Attribute: domain
- Token Claim Name: domain
- Claim JSON Type: String
- Add to userinfo: ON
- Вернуться в Сlients и добавить в созданный express, во вкладке Client scopes – созданный express-cl
- В Users у пользователей должны быть во вкладке Attributes - Key: domain и Value: example.ru, а в Credentials создан пароль

Настройка eXpress
Настройка с AD
- После того как был поставлен CTS, заходим в административную панель: https://express-ms.indeed-id.com/admin/
- Нужно настроить интеграцию с AD (во вкладке “Active Directory” слева).
 
Настройка с OpenId
Вводим необходимые данные во вкладке “OpenId” слева.


|