Синхронизация с внешним IdP
Скрипт выполняет синхронизацию с внешним поставщиком идентификационных данных (IdP). Текущая версия скрипта:
- Создает новых пользователей IdP.
- Создает новые группы IdP.
- Обновляет членство пользователей в группах IdP.
- Обновляет заголовки групп.
- Обновляет роли пользователей.
- Обновляет данные профиля пользователей.
Требования для запуска
- Для запуска скрипта синхронизации необходима Node.js версии 20 и выше. Если Node.js не установлена или нужна более новая версия, выберите подходящий вариант установки на сайте Node.js.
- Настройте конфигурацию для сервиса Auth, используя переменную окружения
AUTH_PROVIDERS_CONFIG. - Отключите
syncUserGroupsвAUTH_PROVIDERS_CONFIGдля вашего IdP, если вы настроили периодическую синхронизацию с помощью данного скрипта.
Пример запуска скрипта
node ./idp-sync.js \
usEndpoint=https://us.domain.org \
authEndpoint=https://auth.domain.org \
usMasterToken=usmastertoken \
authMasterToken=authmastertoken \
idpSlug=someidpslug \
idpData=./idp-data.json
Где:
idpSlug— slug из конфигурации IdP в сервисе Auth;usEndpoint— эндпоинт до сервиса United Storage;authEndpoint— эндпоинт до сервиса Auth;usMasterToken—US_MASTER_TOKENмастер токен для сервиса United Storage;authMasterToken—AUTH_MASTER_TOKENмастер токен для сервиса Auth;idpData— путь до данных из IdP в формате json.
IdP data из источника
Подготовьте данные из IdP в формате json согласно AUTH_PROVIDERS_CONFIG для auth сервиса:
type JsonData = {
users: {
idpUserId: string, // внутренний id пользователя из IdP
login: string,
email : string | null,
firstName: string | null,
lastName: string | null,
roles: string[], // datalens.admin, datalens.creator, datalens.visitor
}[];
groups: {
groupId: string, // внутренний id группы из IdP
title: string,
memberIds: string[], // внутренние id пользователей из IdP - idpUserId
}[];
}
Пример idp-data.json для OpenLDAP
{
"users": [
{
"idpUserId": "id-bob",
"login": "bob",
"email" : "bob@example.org",
"firstName": "Bob",
"lastName": "Smith",
"roles": ["datalens.visitor"]
},
{
"idpUserId": "id-carl",
"login": "carl",
"email" : "carl@example.com",
"firstName": "Carl",
"lastName": "Snow",
"roles": ["datalens.creator"]
}
...
],
"groups": [
{
"groupId": "id-datalensadmins",
"title": "DataLens admins",
"memberIds": ["id-bob", "id-carl"]
},
...
]
}
Предыдущая
Следующая