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

Идентификатор Microsoft Entra может автоматически подготавливать пользователей и группы для любого приложения или системы перед веб-службой с интерфейсом, определенным в спецификации протокола 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, а также способы решения этих проблем.

Основные сведения о задании подготовки

Служба подготовки использует для работы с приложением концепцию задания. Идентификатор задания можно найти на панели выполнения. Все новые приложения подготовки создаются с помощью jobID, начиная scimс . Задание scim представляет текущее состояние службы. У старых заданий есть идентификатор customappsso. Такое задание представляло состояние службы в 2018 г.

Если вы используете приложение в коллекции, задание обычно содержит имя приложения (например, zoomFlake или 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 для обеспечения соответствия требованиям (например, логическое и надлежащее удаление членства в группах) нет Подлежит уточнению Использование флагов компонентов

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

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

Флаги SCIM для последующего поведения.

Используйте следующий 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, в приложении, отличном от коллекции, можно использовать следующий URL-адрес для отката к старому несоответствующем поведению SCIM: AzureAdScimPatch2017

Переход со старого задания customappsso на задание SCIM

Удалите существующее customappsso задание и создайте новое задание SCIM.

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

  2. Перейдите к приложениям Entra ID>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

    Получение заданий

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

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

    GET https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs/[job-id]/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 как минимум администратор приложений.

  2. Перейдите к приложениям Entra ID>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