Справка Business Studio
Переход на сайт нейросети Perplexity AI для поиска информации о Business Studio. Подробнее о возможности см. по ссылке

Содержание справки





Типовые конфигурации



Сценарий А: Поиск по userPrincipalName, идентификатор — objectSid

Самый распространённый и рекомендуемый вариант для среды с Active Directory. Keycloak передаёт UPN пользователя, поиск ведётся по нему, итоговый идентификатор — стабильный SID.

Токен Keycloak:

{
  "email": "ivanov@company.ru"
}

appsettings.json:

"OpenId": {
  "UserIdClaim": "email",
  "UserNameClaim": "name"
},
"Ldap": {
  "UserFilter": "(&(objectCategory=person)(objectClass=user)(userPrincipalName={UserIdClaimValue}))",
  "UserMatchAttribute": "objectSid",
  "UserMatchAttributeIsStringValue": false
}

Вид UserID в Business Studio: S-1-5-21…



Сценарий Б: Поиск по sAMAccountName, идентификатор — строковый атрибут

Используется, если Keycloak передаёт короткое имя пользователя (логин домена), а не полный UPN.

Токен Keycloak:

{
  "preferred_username": "ivanov"
}

appsettings.json:

"OpenId": {
  "UserIdClaim": "preferred_username",
  "UserNameClaim": "name"
},
"Ldap": {
  "UserFilter": "(&(objectCategory=person)(objectClass=user)(sAMAccountName={UserIdClaimValue}))",
  "UserMatchAttribute": "objectSid",
  "UserMatchAttributeIsStringValue": false
}

Вид UserID в Business Studio: S-1-5-21…

Примечание: при таком сценарии важно убедиться, что preferred_username в Keycloak содержит именно sAMAccountName, а не полный email. Это настраивается в маппере токена на стороне Keycloak.



Сценарий В: Поиск по objectSid, пришедшему напрямую из токена

Используется в продвинутых конфигурациях, где Keycloak настроен на передачу SID через пользовательский атрибут. В инструкции по типовому развертыванию (см. Настройка файла appsettings.json) в качестве примера описывается именно такой вариант как пример фильтра по умолчанию.

Токен Keycloak:

{
  "sid": "S-1-5-21..."
}

appsettings.json:

"OpenId": {
  "UserIdClaim": "sid"
},
"Ldap": {
  "UserFilter": "(&(objectCategory=person)(objectClass=user)(objectSid={UserIdClaimValue}))",
  "UserMatchAttribute": "objectSid",
  "UserMatchAttributeIsStringValue": false
}

В этом случае входное значение фильтра и итоговый UserID — один и тот же SID. LDAP-поиск служит лишь для верификации существования пользователя в Active Directory.

Вид UserID в Business Studio: S-1-5-21…



Соответствие между сценариями и значениями в UsersEditions / ServerAdministratorsIds

В разделе UsersEditions в качестве UserId нужно указывать именно то значение, которое становится UserID после LDAP-поиска — то есть значение атрибута UserMatchAttribute.

"UsersEditions": [
  {
    "UserId": "S-1-5-21-...",
    "Edition": "Professional"
  }
]

Если UserMatchAttribute — строковый атрибут (например, mail), то в UserId нужно указать именно email.

Ниже приведена таблица сравнения трех основных сценариев настройки:

Параметр Сценарий А: userPrincipalName Сценарий Б: sAMAccountName Сценарий В: objectSid
UserIdClaim "email" "preferred_username" "sid"
Значение в токене "ivanov@company.ru" "ivanov" "S-1-5-21-…"
Фильтр LDAP userPrincipalName=… sAMAccountName=… objectSid=…
UserMatchAttribute objectSid objectSid objectSid
UserID в системе S-1-5-21-… S-1-5-21-… S-1-5-21-…
Таблица 1. Сравнение основных сценариев настройки