Известные проблемы и решения с соответствием протокола SCIM 2.0 службы подготовки пользователей Microsoft Entra

Идентификатор Microsoft Entra может автоматически подготавливать пользователей и группы к любому приложению или системе, передающейся веб-службой с интерфейсом, определенным в спецификации протокола System for Cross-Domain Identity Management (SCIM) 2.0.

Поддержка протокола SCIM 2.0 в Microsoft Entra ID описана в статье Using System for Cross-Domain Identity Management (SCIM) для автоматической подготовки пользователей и групп из идентификатора Microsoft Entra ID в приложения, в котором перечислены определенные части протокола, которые он реализует, для автоматической подготовки пользователей и групп из идентификатора 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
Обновленный алгоритм установки исправлений для обеспечения соответствия (например, активность как логический флаг и надлежащее удаление членства в группах) No Подлежит уточнению Использование флагов компонентов

Флаги для изменения поведения SCIM

Используйте приведенные ниже флаги в URL-адресе приложения, чтобы изменить поведение клиента SCIM по умолчанию.

SCIM flags to later behavior.

Используйте следующий URL-адрес, чтобы задействовать обновленный алгоритм установки исправлений и обеспечить соответствие 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": "TestBcwqnm@test.microsoft.com"
      },
      {
          "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": "TestMhvaes@test.microsoft.com"
      },
      {
          "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.

  1. Войдите в Центр администрирования Microsoft Entra как минимум приложение Администратор istrator.

  2. Перейдите к приложениям Identity>Applications>Enterprise.

  3. Найдите и выберите существующее приложение SCIM.

  4. В разделе Свойства приложения SCIM скопируйте идентификатор объекта.

  5. В новом окне веб-браузера перейдите и войдите https://developer.microsoft.com/graph/graph-explorer в качестве администратора клиента Microsoft Entra, где добавляется ваше приложение.

  6. В песочнице Graph выполните следующую команду, чтобы найти идентификатор задания подготовки. Замените [object-id] на идентификатор субъекта-службы (идентификатор объекта), скопированный на третьем шаге.

    GET https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs

    Get Jobs

  7. В результатах скопируйте полную строку ID, которая начинается с customappsso или scim.

  8. Выполните следующую команду, чтобы получить конфигурацию сопоставления атрибутов для создания резервной копии. Используйте прежний [object-id] и замените [job-id] на идентификатор задания подготовки, скопированный из последнего шага.

    GET https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs/[job-id]/schema

    Get Schema

  9. Скопируйте выходные данные JSON из последнего шага и сохраните их в текстовом файле. Код JSON содержит все пользовательские сопоставления атрибутов, добавленные в старое приложение, и должен включать примерно несколько тысяч строк JSON.

  10. Выполните следующую команду, чтобы удалить задание подготовки.

    DELETE https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs/[job-id]

  11. Выполните следующую команду, чтобы создать задание подготовки, которое содержит последние исправления службы.

POST https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs { "templateId": "scim" }

  1. В результатах последнего шага скопируйте полную строку 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> }

  1. Вернитесь в первое окно веб-браузера и откройте вкладку Подготовка для приложения.
  2. Проверьте конфигурацию, а затем запустите задание подготовки.

Мы позволяем вернуться к старой модели поведения, но не советуем это делать, так как customappsso не использует некоторые из внесенных нами изменений и, возможно, рано или поздно перестанет поддерживаться.

  1. Войдите в Центр администрирования Microsoft Entra как минимум приложение Администратор istrator.

  2. Перейдите к приложениям Identity>Applications>Enterprise.

  3. В разделе "Создание приложения" создайте новое приложение, отличное от коллекции.

  4. В разделе Свойства нового пользовательского приложения скопируйте идентификатор объекта.

  5. В новом окне веб-браузера перейдите и войдите https://developer.microsoft.com/graph/graph-explorer в качестве администратора клиента Microsoft Entra, где добавляется ваше приложение.

  6. В песочнице Graph выполните приведенную ниже команду для инициализации конфигурации подготовки для приложения. Замените [object-id] на идентификатор субъекта-службы (идентификатор объекта), скопированный на третьем шаге.

    POST https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs { templateId: "customappsso" }

  7. Вернитесь в первое окно веб-браузера и откройте вкладку Подготовка для приложения.

  8. Завершите конфигурации подготовки пользователей, как обычно.

Следующие шаги

Автоматическая подготовка пользователей и ее отзыв для приложений SaaS в Azure Active Directory