Смена основного атрибута пользователя

После изменения основного атрибута-идентификатора пользователь не сможет войти через единый вход (SSO) — система заблокирует его аккаунт. Новый аккаунт создать не получится, потому что логин уже занят. Если удалить заблокированный аккаунт, его данные не сохранятся.

Чтобы заменить основной атрибут пользователя без потери данных, выполните шаги ниже.

Во время смены атрибута возможны временные сбои в сопоставлении пользователей.

Шаг 1. Остановите работу службы ADSCIM

Это можно сделать через командную строку:

sc stop yandexadscim

Или откройте диспетчер задач и отключите ADSCIM во вкладке Службы.

Шаг 2. Откройте конфигурационный файл

В конфигурационном файле %ProgramData%\Yandex\YandexADSCIM\AD_Users.config измените параметры:

  1. Замените значение <новый_атрибут> на новый тип атрибута — например, objectSID.

  2. Если вы меняете атрибут с доменом user@domain на атрибут без домена или наоборот, замените значение <игнорировать_домен> на True.

    Если доменная часть атрибута используется, замените значение <игнорировать_домен> на False.

  3. Включите режим эмуляции через параметр DryRun, поставив значение True.

#1
PropertyLoginName = <новый_атрибут>
#2
IgnoreUsernameDomain = <игнорировать_домен>
#3
DryRun = True

Шаг 3. Замените атрибут пользователя в Active Directory

  1. Войдите на ваш сервер AD FS и откройте Диспетчер серверов.

  2. Откройте консоль управления: нажмите Средства → Управление AD FS.

  3. В блоке Отношения доверия проверяющей стороны правой кнопкой мыши нажмите на отношение с проверяющей стороной и выберите Изменить политику подачи запросов.

  4. Удалите правило «Name ID».

  5. Откройте правило «LDAPATTR».

    Если в конце списка есть тип утверждения «Name ID», в поле напротив выберите новый атрибут из списка, например «objectSID».

    Если такого типа нет, добавьте новую строку: выберите атрибут из списка, например «objectSID», и выберите тип «Name ID».

  6. После внесения изменений нажмите Готово.

Шаг 4. Замените идентификатор пользователя в Яндекс ID

  1. Получите значение нового атрибута пользователя из Active Directory. Например, для атрибута «objectSID» оно имеет вид S-1-5-21-385924754-3098930696-4032458252-501.

    Это можно сделать через PowerShell, заменив OU=RU Users,DC=yourdomain,DC=net на данные вашей организации.

    Get-ADUser -Filter * -SearchBase "OU=RU Users,DC=yourdomain,DC=net" -Properties userPrincipalName, mail, employeeID, objectSID, objectGUID |
    Select-Object userPrincipalName, mail, employeeID, 
        @{Name="objectSID"; Expression={$_.objectSID.ToString()}}, 
        @{Name="objectGUID"; Expression={$_.objectGUID.Guid.ToString()}} |
    Export-Csv -NoTypeInformation -Encoding UTF8 -Path C:\temp\users_properties.csv
    
  2. Получите параметр пользователя «id» через API Яндекс 360, заменив значения <идентификатор_домена> и <токен_SCIM> на подходящие для вашей организации. Где их взять

    curl --location 'https://<идентификатор_домена>.scim-api.passport.yandex.net/v2/Users' \
    --header 'Authorization: Bearer <токен_SCIM>' \
    --header 'Content-Type: application/json'
    

    Если в вашей организации больше 50 пользователей, для корректного отображения результатов добавьте в запрос:

    {
    "count": 50,
    "startIndex": 1
    }
    
  3. Измените параметр пользователя «userName» через API Яндекс 360, заменив значения <идентификатор_домена> и <токен_SCIM> на подходящие для вашей организации.

    Вместо <идентификатор_пользователя> подставьте параметр «id» из Яндекс 360, полученный на шаге 4.2.

    Вместо <значение_атрибута_из_Active_Directory> подставьте значение нового атрибута из Active Directory, полученное на шаге 4.1.

    curl --location --request PATCH 'https://<идентификатор_домена>.scim-api.passport.yandex.net/v2/Users/<идентификатор_пользователя>' \
    --header 'Authorization: Bearer <токен_SCIM>' \
    --header 'Content-Type: application/json' \
    --data '{
        "Operations": [
            {
                "value": "<значение_атрибута_из_Active_Directory>",
                "op": "replace",
                "path": "userName"
            }
        ],
        "schemas": [
            "urn:ietf:params:scim:api:messages:2.0:PatchOp"
        ]
    }'
    

Шаг 5. Возобновите работу службы ADSCIM

Проверьте, что единый вход (SSO) подключен и работает — в утверждениях от AD FS должен приходить новый «Name ID».

Если тестирование прошло успешно, вернитесь к шагу 2 и отключите режим эмуляции через параметр DryRun, поставив значение False.

#3
DryRun = False

После этого введите в командную строку:

sc start yandexadscim

Или откройте диспетчер задач и запустите ADSCIM во вкладке Службы.

Написать в службу поддержки