Фон
В настоящее время я работаю над реализацией управления пользователями 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
свойства пользователя работает .
Есть идеи?