Как работать с расширениями схемы Azure Active Directory в многопользовательском сценарии

#azure-active-directory #microsoft-graph-api

#azure-active-directory #microsoft-graph-api

Вопрос:

Я хочу использовать расширение схемы Azure AD для расширения одного свойства, я успешно создал расширение схемы с идентификатором « myverifiedaaddomain_extensionid «.

Расширение схемы :

 {
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#schemaExtensions/$entity",
    "id": "myverifiedaaddomain_extensionid",
    "description": "myverifiedaaddomain_extensionid",
    "targetTypes": [
        "User"
    ],
    "status": "InDevelopment",
    "owner": "owner",
    "properties": [
        {
            "name": "isExtended",
            "type": "Boolean"
        }
    ]
}
  

ПРИМЕЧАНИЕ: В сценарии с одним клиентом он работает отлично.


Многопользовательский сценарий :

Сценарий —

  1. У меня есть хост-клиент T1
  2. Зарегистрированный многопользовательский AAD AAP A1 (в T1 со всеми необходимыми разрешениями)
  3. Я хочу встроить tenant T2
  4. Зарегистрируйте расширение схемы на T2 после успешной загрузки

Когда я подключаю T2, все расширения схемы из T1, владельцем которого является A1, импортируются в каталог T2 без какого-либо уведомления или запроса.

Итак, в настоящее время он работает и в многопользовательском сценарии, но я не уверен, что все расширения схемы будут экспортированы в партнерский клиент (T2), это ожидаемое поведение или ошибка? Здесь нет четкой документации https://learn.microsoft.com/en-us/graph/extensibility-overview или https://learn.microsoft.com/en-us/graph/api/resources/schemaextension?view=graph-rest-1.0

Кроме этого, также нет четкой документации по разрешениям, например : https://learn.microsoft.com/en-us/graph/extensibility-overview#permissions Они упомянули, что для чтения / обновления расширенных данных вам нужны все разрешения, указанные на странице разрешений этого ресурса. Для User ресурса нам понадобятся все разрешения, упомянутые здесь https://learn.microsoft.com/en-us/graph/api/user-get?view=graph-rest-1.0#permissions

Это не работает, я не могу читать расширенные данные через другие приложения AAD (A2, A3 и т.д.), которые имеют все разрешения, упомянутые на странице выше (https://learn.microsoft.com/en-us/graph/api/user-get?view=graph-rest-1.0#permissions).

Ответ №1:

Извините за некоторые проблемы, с которыми вы сталкиваетесь здесь. Просто для двойной проверки — использовали ли вы расширения схемы Azure AD Directory в прошлом? Я спрашиваю, потому что, похоже, у вас есть некоторые предубеждения о том, как работают расширения, и они ведут себя немного по-другому в Microsoft Graph.

Что касается документации — это описано в разделе о жизненном цикле расширения схемы в https://learn.microsoft.com/en-us/graph/extensibility-overview#schema-extensions. Возможно, мы сможем сделать лучшую работу по предоставлению полного сценария. Но вот важный момент при установке состояния определения схемы на Available :

  • Расширение схемы доступно для использования всеми приложениями в любом клиенте.

  • После того, как приложение-владелец установит для расширения значение Доступно, любое приложение может просто добавлять пользовательские данные в экземпляры тех типов ресурсов, которые указаны в расширении (при условии, что приложение имеет разрешения на этот ресурс). Приложение может назначать пользовательские данные при создании нового экземпляра или обновлении существующего экземпляра.

  • Только приложение-владелец может обновлять определение расширения с дополнительными изменениями. Ни одно приложение не может удалить определение расширения в этом состоянии.
  • Приложение-владелец может перевести расширение схемы из состояния «Доступно» в состояние «Устарело».

С точки зрения неработоспособности разрешений, какие разрешения были предоставлены многопользовательскому приложению или другим приложениям A2 и A3? Какой ответ вы видите (не могли бы вы также предоставить запрос, пожалуйста)?

Надеюсь, это поможет,

Комментарии:

1. Привет @Dan, спасибо за ответ. В многопользовательском сценарии все расширения схемы, зарегистрированные / связанные с приложением AAD, экспортируются в клиент, который подключается. На странице согласия нет информации об этом. Что касается разрешений, я пытался получить доступ к расширенному свойству из другого приложения, пока мое расширение находилось в стадии разработки. Теперь с этим разобрались.

2. Кстати, есть еще одна проблема, с которой я сталкиваюсь: $filter доступен на ресурсе «/groups/{groupId}/members». Но в документе здесь learn.microsoft.com/en-us/graph /… они не упомянули, что фильтрация недоступна в /groups/{groupId}/members. Есть мысли по этому поводу?