Не удается получить всех пользователей из AAD при попытке получить список пользователей с помощью API MSGrpah - PullRequest
0 голосов
/ 13 февраля 2019

Вот мой код, который вытягивает из активного каталога только 100 пользователей.Я также предоставил «разрешение на чтение всех профилей пользователей» в приложениях и делегированных разделах.

namespace MVCDemoGraphAPI.Controllers
{
    public class HomeController : Controller
    {
        private static string clientId = ConfigurationManager.AppSettings["ida:ClientId"];

        private static string aadInstance = ConfigurationManager.AppSettings["ida:AADInstance"];

        private static string tenant = ConfigurationManager.AppSettings["ida:Tenant"];

        private static string appKey = ConfigurationManager.AppSettings["ida:AppKey"];

        public async Task<string> Users()

        {
            string authority = string.Format(CultureInfo.InvariantCulture, aadInstance, tenant);

            AuthenticationContext authContext = new AuthenticationContext(authority);
            AuthenticationResult result = null;

            try
            {
                result = await authContext.AcquireTokenAsync("https://graph.microsoft.com",
                    new ClientCredential(clientId, appKey));
            }
            catch (Exception)
            {

                throw;
            }

            //Now call the Graph API
            HttpClient client = new HttpClient();

             HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://graph.microsoft.com/v1.0/users");

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
            HttpResponseMessage response = await client.SendAsync(request);

            string output = await response.Content.ReadAsStringAsync();
            return output;
        }
    }
}

1 Ответ

0 голосов
/ 13 февраля 2019

Вы должны использовать фильтры пейджинга, как описано здесь: https://docs.microsoft.com/en-us/previous-versions/azure/ad/graph/howto/azure-ad-graph-api-supported-queries-filters-and-paging-options, в основном, пейджинг вперед.

Я рекомендую использовать клиент Nuget c # graph, а затем использовать следующий код:

  var users = await graphClient.Users.Request().GetAsync();
try
    {
        while (users != null)
        {
            var usersList = users.CurrentPage.ToList();
            count = count + usersList.Count();
            users = await users.NextPageRequest.GetAsync();
        }
    }
    catch
    {
        //
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...