Подсчет ролей с использованием Graph Api против арендатора - PullRequest
1 голос
/ 09 марта 2019

Есть ли способ найти каждое role, которое существует против tenant и number of users, которые были назначены для каждого role с использованием GraphServiceClient или GraphConnection класса?Я использую C #.

1 Ответ

1 голос
/ 09 марта 2019

Роли каталогов - Поиск всех ролей каталогов и количества их членов для арендатора

Я привел пример кода для 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:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...