Расширение MemberOf с помощью Microsoft Graph не заполняет группы - PullRequest
0 голосов
/ 30 апреля 2018

Фон
В настоящее время я работаю над реализацией управления пользователями Azure Active Directory на нашем собственном портале, чтобы обеспечить управление пользователями для пользователей, которые мы не хотим отслеживать на портале Azure. Я реализовал это с помощью разрешений приложений, чтобы мы могли получить права администратора Azure для этого конкретного приложения. RBAC вместе с ролями пользователей в нашем приложении обеспечивают возможность использования функциональности только авторизованными пользователями.

Одна из вещей, которую мы хотели включить, - это приглашение пользователей в наш клиент Azure Active Directory. Мне удалось реализовать это, и все казалось великолепным. Следующим шагом было внедрение обзора пользователей с назначенными им ролями.

Кстати, это необходимые (и предоставленные) разрешения:

  • Приглашение гостевых пользователей в организацию
  • Читать все группы
  • Чтение данных каталога
  • Читать все профили всех пользователей

выпуск
Получение пользователей в арендаторе не проблема. Получение информации MemberOf для списка пользователей не работает. После некоторых поисков я обнаружил, что вашему приложению необходимо разрешение Directory.Read.All (документация по List memberOf ). Я добавил разрешение, протестировал код с ожиданием: ничего. Свойство MemberOf всегда равно null.

Сценарии, которые не работают:
Расширение MemberOf для всех пользователей:

var allUsers = await _graphClient.Users.Request().Expand(u => u.MemberOf).GetAsync();

Расширение MemberOf для конкретного пользователя:

var user = await _graphClient.Users[userId].Request().Expand(u => u.MemberOf).GetAsync();

Сценарии, которые делают работают:
Получение расширения всех групп Участники:

var groupsWithMembers = await _graphClient.Groups.Request().Expand(g => g.Members).GetAsync();

Получение информации MemberOf для конкретного пользователя:

var userGroups = await _graphClient.Users[userId].MemberOf.Request().GetAsync();

Вопрос
Короче: чего мне здесь не хватает? Насколько я могу определить, я установил разрешения, необходимые для приложения, и использую SDK, как описано в документации. И это должно быть правильно, учитывая тот факт, что расширение Members свойства пользователя работает .

Есть идеи?

1 Ответ

0 голосов
/ 01 мая 2018

Документация, к сожалению, немного расплывчата по теме, но в настоящее время конечная точка /v1.0 не поддерживает расширение свойства memberOf. Однако он поддерживается конечной точкой /beta.

Я бы рекомендовал переключиться на /beta для этого вызова. Обычно руководство заключается в том, чтобы избегать использования бета-версии в производстве. Часто существуют незначительные различия в схеме между версиями 1.0 и бета-версиями, и эта конечная точка может (и имеет) возможность получать критические изменения без предупреждения. В этом конкретном случае, однако, это не должно быть проблемой, так как вы расширяете свойство, которое уже существует в v1.0 (хотя в настоящее время не работает) /

...