SSO в Пачке с Indeed IdP по SAML
1. Получение информации от администратора Keycloak (SP)
Прежде чем приступить к настройке, запросите у администратора keycloak следующую информацию:
- SP Entity ID (Идентификатор поставщика услуг)
- Пример: https://my-keycloak.company.com/auth/realms/my-realm
- Assertion Consumer Service (ACS) URL
- Пример: https://my-keycloak.company.com/auth/realms/my-realm/broker/saml/endpoint
- Single Logout (SLO) URL (если требуется)
- Пример: https://my-keycloak.company.com/auth/realms/my-realm/broker/saml/endpoint
Примечание: В Keycloak SLO URL часто совпадает с ACS URL.
2. Конфигурация файла настроек Indeed
Откройте ваш файл конфигурации (app-settings.json) и внесите изменения в следующие секции.
Здесь можно посмотреть пример файла конфигурации.
2.1. Добавление нового Service Provider
Найдите секцию SAML.Configurations. Внутри нее находится массив PartnerServiceProviderConfigurations. Вам нужно добавить в этот массив новый объект для Keycloak.
Пример объекта для добавления:
{
"Name": "https://my-keycloak.company.com/auth/realms/my-realm",
"SignSamlResponse": true,
"ValidAssertionConsumerServiceUrls": ["http://localhost:8080"],
"SingleLogoutServiceUrl": "https://my-keycloak.company.com/auth/realms/my-realm/broker/saml/endpoint"
}
Замените примеры URL и Name на реальные данные, полученные на Шаге 1. Параметр SignSamlResponse должен быть установлены в true, чтобы Indeed подписывал свои ответы.
2.2. Определение формата логина
Найдите секцию AuthenticationSettings.LoginFormats. Добавьте в этот массив новый объект, чтобы указать, какой атрибут пользователя использовать в качестве NameID для Keycloak.
Пример объекта для добавления:
{
"ServiceProvider": "https://my-keycloak.company.com/auth/realms/my-realm",
"InLoginFormat": "Name",
"OutLoginFormat": "PrincipalName"
}
2.3. Настройка передачи атрибутов пользователя (обязательно)
Для корректной работы Keycloak должен получать информацию о пользователе (email, имя, фамилия). Настройте передачу этих атрибутов в секции AuthenticationSettings.CustomAttributes. Добавьте в этот массив новый объект для Keycloak.
Пример объекта для добавления:
{
"ServiceProvider": "https://my-keycloak.company.com/auth/realms/my-realm",
"Attributes": [
{
"Name": "email",
"UserNameFormat": "email"
},
{
"Name": "given_name",
"UserNameFormat": "firstName"
},
{
"Name": "family_name",
"UserNameFormat": "lastName"
},
{
"Name": "preferred_username",
"UserNameFormat": "PrincipalName"
}
]
}
Этот блок сопоставляет внутренние поля пользователя Indeed (email, firstName и т.д.) с именами атрибутов, которые будут отправлены в SAML-утверждении. Сообщите администратору Keycloak имена этих атрибутов (Name), чтобы он мог настроить их прием.
3. Предоставление информации администратору Keycloak
После сохранения конфигурации и перезапуска сервиса Indeed, предоставьте администратору Keycloak следующие данные о вашем IdP:
- IdP Entity ID (Issuer)
- urn:indeedid:saml_idp
- Single Sign-On (SSO) URL
- https://indeed.company.com/am/idp/Account/SsoService
- SLO URL
- https://indeed.company.com/am/idp/Account/SloService
- Публичный сертификат
- Экспортируйте публичную часть сертификата (отпечаток 57CB4...) в формате .cer или .pem
После того как администратор Keycloak внесет эти данные в свою систему, интеграция будет готова к тестированию.