Как получить всех пользователей из Azure Active Directory Group с помощью C # - PullRequest
0 голосов
/ 03 октября 2019

У нас есть приложение, разработанное в ASP.NET MVC. У нас также есть Acitve Directory, настроенный в Azure, и в нем есть несколько групп. Требование заключается в том, что нам нужно выбрать всех пользователей из группы Azure Active Directory и добавить в них нового пользователя.

Мы используем приведенный ниже код, и, я думаю, он запрашивает дополнительную аутентификацию. мы хотим обеспечить всю аутентификацию в самом коде, не давая всплывающему окну аутентификации. Не могли бы вы помочь с этим

   // Build a client application.
            IPublicClientApplication publicClientApplication = PublicClientApplicationBuilder
                        .Create("clientID")
                        .WithTenantId("tenantId")
                        .Build();
            // Create an authentication provider by passing in a client application and graph scopes.
            DeviceCodeProvider authProvider = new DeviceCodeProvider(publicClientApplication, new[] { "User.Read" });
            // Create a new instance of GraphServiceClient with the authentication provider.
            GraphServiceClient graphClient = new GraphServiceClient(authProvider);

            var members = await graphClient.Groups["groupId"].Members
                .Request()
                .GetAsync();

Выше кода показывает сообщение как "Чтобы войти, используйте веб-браузер, чтобы открыть страницу https://microsoft.com/devicelogin и введите код G9277ULC9 для аутентификации. "

Как мы можем предоставить всю аутентификационную информацию в самом коде, чтобы избежать этого шага?

Обновлены API-разрешения, как показано ниже -

enter image description here Заранее спасибо.

1 Ответ

3 голосов
/ 03 октября 2019

Для этого вы можете использовать Microsoft Graph SDK .

Список членов группы :

GraphServiceClient graphClient = new GraphServiceClient( authProvider );

var members = await graphClient.Groups["{id}"].Members
    .Request()
    .GetAsync();

Добавить участника в группу :

GraphServiceClient graphClient = new GraphServiceClient( authProvider );

var directoryObject = new DirectoryObject
{
    AdditionalData = new Dictionary<string, object>()
    {
        {"@odata.id","https://graph.microsoft.com/v1.0/directoryObjects/{id}"}
    }
};

await graphClient.Groups["{id}"].Members.References
    .Request()
    .AddAsync(directoryObject);

Обновление :

Если вы хотите неинтерактивный способ, вам нужно использовать поток учетных данных клиента,т.е. создать authProvider экземпляр как поставщик учетных данных клиента .

IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
    .Create(clientId)
    .WithTenantId(tenantID)
    .WithClientSecret(clientSecret)
    .Build();

ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);
...