Роли каталогов - Поиск всех ролей каталогов и количества их членов для арендатора
Я привел пример кода для Microsoft Graph API (https://graph.microsoft.com), а также AzureAPI Graph API (https://graph.windows.net),, но настоятельно рекомендуется использовать более новый Microsoft Graph API, если нет чего-то особенного, что вы не можете получить от него, и только тогда посмотрите на API Azure AD Graph.
Смотрите здесь для более подробного сравнения График Microsoft или Azure AD Graph
Вот подробности пакета и класса nuget, как вы просили в комментариях:
Microsoft.Graph
пакет nuget - для работы с Microsoft Graph API
и использования GraphServiceClient
class.
Microsoft.Azure.ActiveDirectory.GraphClient
пакет nuget - для работы с API-интерфейсом Azure AD Graph ииспользуйте ActiveDirectoryClient
class.
API Microsoft Graph
API - Список каталогов Role * и Члены списка
var roles = await graphServiceClient.DirectoryRoles.Request().GetAsync();
var members = graphServiceClient.DirectoryRoles[role.Id].Members.Request().GetAsync();
API-интерфейс Azure AD Graph
API - ПолучитьРоли каталогов и Получение членов роли каталогов
var directoryRoles = activeDirectoryClient.DirectoryRoles.ExecuteAsync();
var members = await activeDirectoryClient.DirectoryRoles[role.ObjectId].Members.ExecuteAsync();
ПРИМЕЧАНИЕ. Во время тестирования кода я также заметил небольшую разницу в поведении двух API.Microsoft Graph возвращает пользователей только тогда, когда вы запрашиваете членов роли каталога.График Azure AD, с другой стороны, возвращает как пользователей, так и участников службы.См. Мой код для специальной проверки в случае Azure AD Graph.
Также обратите внимание, что многие из полученных результатов будут разбиты на страницы, поэтому вам может потребоваться обрабатывать нумерацию страниц в случае нескольких страниц результатов.
Роли приложений - Поиск всех ролей приложений для приложения, а затем определение количества пользователей с помощью назначений ролей приложений.
Роли приложения относятся к приложению, зарегистрированному в Azure AD.Собрание назначений ролей для этого приложения можно прочитать, пройдя через участника службы для этого приложения в клиенте.
API Azure AD Graph
Роли приложения
var app = activeDirectoryClient.Applications["<applicationObjectId>"].ExecuteAsync().Result;
var appRoles = app.AppRoles;
Назначения ролей приложения
ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(new Uri("https://graph.windows.net/<tenantGuid>"),
async () => await GetTokenForApplication());
var servicePrincipal = activeDirectoryClient.ServicePrincipals.Where(x => x.AppId == "<applicationId>").ExecuteAsync().Result.CurrentPage[0];
var appRoleAssignments = activeDirectoryClient.ServicePrincipals[servicePrincipal.ObjectId].AppRoleAssignedTo.ExecuteAsync().Result;
int userCountForApp = 0;
foreach(var appRoleAssignment in appRoleAssignments.CurrentPage)
{
if (appRoleAssignment.PrincipalType == "User")
{
userCountForApp++;
Console.WriteLine("Role Id = {0} and User Name = {1}", appRoleAssignment.Id, appRoleAssignment.PrincipalDisplayName);
}
}
Microsoft GraphAPI
Возможность считывания всех специфических ролей приложения, назначенных пользователю (например, AppRoleAssignments), доступна только как часть конечной точки бета-версии API Microsoft Graph.Так что он недостаточно стабилен для использования в рабочем коде, и вы не найдете поддержки Client SDK для C #.Подробнее о конкретных точках в этом посте от Marc LaFleur
Здесь приведены соответствующие API: