Известные проблемы и решения с соответствием протокола SCIM 2.0 службы подготовки пользователей Microsoft Entra
Идентификатор Microsoft Entra может автоматически подготавливать пользователей и группы к любому приложению или системе, передающейся веб-службой с интерфейсом, определенным в спецификации протокола System for Cross-Domain Identity Management (SCIM) 2.0.
Поддержка Microsoft Entra для протокола SCIM 2.0 описана в статье Using System for Cross-Domain Identity Management (SCIM) для автоматической подготовки пользователей и групп из идентификатора Microsoft Entra в приложения, в котором перечислены определенные части протокола, которые он реализует для автоматической подготовки пользователей и групп из идентификатора Microsoft Entra в приложения, поддерживающие SCIM 2.0.
В этой статье описываются текущие и прошлые проблемы, связанные с соответствием службы подготовки пользователей Microsoft Entra к протоколу SCIM 2.0, а также способы решения этих проблем.
Основные сведения о задании подготовки
Служба подготовки использует для работы с приложением концепцию задания. Идентификатор задания можно найти на индикаторе выполнения. Все новые приложения подготовки создаются с ИД задания, начинающимся со строки "scim". Задание scim представляет текущее состояние службы. У более старых заданий идентификатор "customappsso". Такое задание представляло состояние службы в 2018 г.
Если вы используете приложение в коллекции, задание обычно содержит имя приложения (например, масштабирование snowFlake или dataBricks). При использовании приложения из коллекции эту документацию можно пропустить. Это в основном относится к приложениям не из коллекции с идентификатором задания SCIM или customAppSSO.
Проблемы соответствия SCIM 2.0 и их состояние
Если в таблице ниже элемент помечен как исправленный, это означает, что соответствующее поведение реализовано в задании SCIM. Мы постарались обеспечить обратную совместимости для всех вносимых нами изменений. Мы рекомендуем использовать новую модель для всех новых реализаций и обновлять существующие реализации. Обратите внимание, что поведение customappSSO, используемое по умолчанию до декабря 2018 г., больше не поддерживается.
Примечание.
Для изменений, внесенных в 2018 г., можно по-прежнему использовать модель customappsso. Для изменений, внесенных после 2018 г., вы можете воспользоваться URL-адресами для возврата к старой модели. Мы постарались обеспечить обратную совместимости для всех вносимых нами изменений и позволяем вернуться к старому идентификатору задания или использовать флаг. Однако, как уже упоминалось, реализовывать старую модель не рекомендуется, так как она больше не поддерживается. Мы рекомендуем использовать новую модель для всех новых реализаций и обновлять существующие реализации.
Проблема соответствия SCIM 2.0 | Исправлена? | Дата исправления | обратная совместимость; |
---|---|---|---|
Идентификатор Microsoft Entra должен находиться в корневом каталоге URL-адреса конечной точки SCIM приложения ./scim. | Да | 18 декабря 2018 г. | Обратный переход на customappSSO |
Перед именами атрибутов атрибуты расширения используют нотацию "." (точка) вместо ":" (двоеточие). | Да | 18 декабря 2018 г. | Обратный переход на customappSSO |
Запросы patch для многозначных атрибутов содержат недопустимый синтаксис фильтра пути. | Да | 18 декабря 2018 г. | Обратный переход на customappSSO |
Запросы на создание группы содержат недопустимый URI схемы. | Да | 18 декабря 2018 г. | Обратный переход на customappSSO |
Обновление поведения PATCH для обеспечения соответствия требованиям (например, логическое и надлежащее удаление членства в группах) | No | Подлежит уточнению | Использование флагов компонентов |
Флаги для изменения поведения SCIM
Используйте приведенные ниже флаги в URL-адресе приложения, чтобы изменить поведение клиента SCIM по умолчанию.
Используйте следующий URL-адрес, чтобы задействовать обновленный алгоритм установки исправлений и обеспечить соответствие SCIM. Этот флаг изменит следующие варианты поведения:
- запросы на отключение пользователей;
- запросы на добавление строкового атрибута с одним значением;
- запросы на замену нескольких атрибутов;
- запросы на удаление члена группы.
Эта модель поведения в настоящее время доступна только при использовании флага, однако станет вариантом по умолчанию в течение следующих нескольких месяцев. Обратите внимание, что этот флаг функции пока не работает при подготовке по запросу.
- URL-адрес (соответствует SCIM): aadOptscim062020
- Ссылки на RFC SCIM:
Ниже приведены примеры запросов, которые помогут определить, что в настоящее время отправляет модуль синхронизации, а также запросы, которые отправляются после включения флага функции.
Запросы на отключение пользователей:
без флага функции;
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
],
"Operations": [
{
"op": "Replace",
"path": "active",
"value": "False"
}
]
}
с флагом функции.
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
],
"Operations": [
{
"op": "replace",
"path": "active",
"value": false
}
]
}
Запросы на добавление строкового атрибута с одним значением:
без флага функции;
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
],
"Operations": [
{
"op": "Add",
"path": "nickName",
"value": "Babs"
}
]
}
с флагом функции.
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [
{
"op": "add",
"path": "nickName",
"value": "Babs"
}
]
}
Запросы на замену нескольких атрибутов:
без флага функции;
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
],
"Operations": [
{
"op": "Replace",
"path": "displayName",
"value": "Pvlo"
},
{
"op": "Replace",
"path": "emails[type eq \"work\"].value",
"value": "[email protected]"
},
{
"op": "Replace",
"path": "name.givenName",
"value": "Gtfd"
},
{
"op": "Replace",
"path": "name.familyName",
"value": "Pkqf"
},
{
"op": "Replace",
"path": "externalId",
"value": "Eqpj"
},
{
"op": "Replace",
"path": "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber",
"value": "Eqpj"
}
]
}
с флагом функции.
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
],
"Operations": [
{
"op": "replace",
"path": "emails[type eq \"work\"].value",
"value": "[email protected]"
},
{
"op": "replace",
"value": {
"displayName": "Bjfe",
"name.givenName": "Kkom",
"name.familyName": "Unua",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber": "Aklq"
}
}
]
}
Запросы на удаление члена группы:
без флага функции;
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
],
"Operations": [
{
"op": "Remove",
"path": "members",
"value": [
{
"value": "u1091"
}
]
}
]
}
с флагом функции.
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
],
"Operations": [
{
"op": "remove",
"path": "members[value eq \"7f4bc1a3-285e-48ae-8202-5accb43efb0e\"]"
}
]
}
- URL-адрес для перехода на более раннюю версию: после того как новая модель поведения, совместимая со SCIM, будет применяться по умолчанию для приложений не из коллекции, для отката к старой (не совместимой со SCIM) модели вы сможете использовать URL-адрес AzureAdScimPatch2017
Переход со старого задания customappsso на задание SCIM
Выполнив приведенные ниже действия, удалите существующее задание customappsso и создадите новое задание SCIM.
Войдите в Центр администрирования Microsoft Entra как минимум администратор приложений.
Перейдите к приложениям Identity>Applications>Enterprise.
Найдите и выберите существующее приложение SCIM.
В разделе Свойства приложения SCIM скопируйте идентификатор объекта.
В новом окне веб-браузера перейдите и войдите https://developer.microsoft.com/graph/graph-explorer в качестве администратора клиента Microsoft Entra, где добавляется ваше приложение.
В песочнице Graph выполните следующую команду, чтобы найти идентификатор задания подготовки. Замените [object-id] на идентификатор субъекта-службы (идентификатор объекта), скопированный на третьем шаге.
GET https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs
В результатах скопируйте полную строку ID, которая начинается с customappsso или scim.
Выполните следующую команду, чтобы получить конфигурацию сопоставления атрибутов для создания резервной копии. Используйте прежний [object-id] и замените [job-id] на идентификатор задания подготовки, скопированный из последнего шага.
GET https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs/[job-id]/schema
Скопируйте выходные данные JSON из последнего шага и сохраните их в текстовом файле. Код JSON содержит все пользовательские сопоставления атрибутов, добавленные в старое приложение, и должен включать примерно несколько тысяч строк JSON.
Выполните следующую команду, чтобы удалить задание подготовки.
DELETE https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs/[job-id]
Выполните следующую команду, чтобы создать задание подготовки, которое содержит последние исправления службы.
POST https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs
{ "templateId": "scim" }
- В результатах последнего шага скопируйте полную строку ID, которая начинается с scim. При необходимости повторно примените прежние сопоставления атрибутов, выполнив следующую команду: замените [new-job-id] на скопированный идентификатор задания и введите выходные данные JSON из шага 7 в качестве текста запроса.
PUT https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs/[new-job-id]/schema
{ <your-schema-json-here> }
- Вернитесь в первое окно веб-браузера и откройте вкладку Подготовка для приложения.
- Проверьте конфигурацию, а затем запустите задание подготовки.
Переход от задания SCIM к заданию customappsso (не рекомендуется)
Мы позволяем вернуться к старой модели поведения, но не советуем это делать, так как customappsso не использует некоторые из внесенных нами изменений и, возможно, рано или поздно перестанет поддерживаться.
Войдите в Центр администрирования Microsoft Entra как минимум администратор приложений.
Перейдите к приложениям Identity>Applications>Enterprise.
В разделе "Создание приложения" создайте новое приложение, отличное от коллекции.
В разделе Свойства нового пользовательского приложения скопируйте идентификатор объекта.
В новом окне веб-браузера перейдите и войдите https://developer.microsoft.com/graph/graph-explorer в качестве администратора клиента Microsoft Entra, где добавляется ваше приложение.
В песочнице Graph выполните приведенную ниже команду для инициализации конфигурации подготовки для приложения. Замените [object-id] на идентификатор субъекта-службы (идентификатор объекта), скопированный на третьем шаге.
POST https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs
{ templateId: "customappsso" }
Вернитесь в первое окно веб-браузера и откройте вкладку Подготовка для приложения.
Завершите конфигурации подготовки пользователей, как обычно.
Следующие шаги
Автоматическая подготовка пользователей и ее отзыв для приложений SaaS в Azure Active Directory