Получить группы из MS Graph с идентификатором клиента и секретом C# - PullRequest
0 голосов
/ 30 апреля 2020

Я новичок в Microsoft Graph. Я разрабатываю консольное приложение для получения групп из Azure AD. Я зарегистрировал приложение в Appr регистрация с секретом клиента и согласие на разрешение на портале Azure. Я дал http://localhost: 3003 в качестве URL перенаправления для Azure приложения AD.

    using Microsoft.Graph;
    using Microsoft.Graph.Auth;
    using Microsoft.Identity.Client;

 public static async Task<string> GetGroups()
        {
            try
            {
                IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
                .Create(clientId)
                .WithTenantId(tenantID)
                .WithClientSecret(clientSecret)
                .Build();

                ClientCredentialProvider authenticationProvider = new ClientCredentialProvider(confidentialClientApplication);
                var graphClient = new GraphServiceClient(authenticationProvider);
                var groups = await graphClient.Groups.Request().GetAsync();
                return groups.FirstOrDefault().DisplayName;
                //await Task.FromResult(Finduser.Mail);
            }
            catch (Exception ex)
            {
                return Task.FromResult(string.Empty).ToString();
                //throw;
            }
        }

Но я не получил никакого вывода и ошибки. Кто-нибудь может мне с этим помочь? Кроме того, я хотел бы знать, есть ли способ получить токены доступа для того же

1 Ответ

1 голос
/ 01 мая 2020

Этот образец руководства График Microsoft C# Фрагменты консоли Мне правильный путь.

Для моего требования AppMode.cs был пригоден и работал нормально

public static GraphServiceClient client;
client = AuthenticationHelper.GetAuthenticatedClientForApp();

public static GraphServiceClient GetAuthenticatedClientForApp()
        {

            // Create Microsoft Graph client.
            try
            {
                graphClient = new GraphServiceClient(
                    "https://graph.microsoft.com/v1.0",
                    new DelegateAuthenticationProvider(
                        async (requestMessage) =>
                        {
                            var token = await GetTokenForAppAsync();
                            requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", token);
                            // This header has been added to identify our sample in the Microsoft Graph service.  If extracting this code for your project please remove.
                            requestMessage.Headers.Add("SampleID", "console-csharp-snippets-sample");

                        }));
                return graphClient;
            }

            catch (Exception ex)
            {
                Debug.WriteLine("Could not create a graph client: " + ex.Message);
            }


            return graphClient;
        }

        /// <summary>
        /// Get Token for App.
        /// </summary>
        /// <returns>Token for app.</returns>
        public static async Task<string> GetTokenForAppAsync()
        {
            AuthenticationResult authResult;
            authResult = await IdentityAppOnlyApp.AcquireTokenForClientAsync(new string[] { "https://graph.microsoft.com/.default" });
            return authResult.AccessToken;
        }

       IUserMemberOfCollectionWithReferencesPage userGroups = client.Users[email].MemberOf.Request().GetAsync().Result;

                if (userGroups.Count == 0)
                {
                    Console.WriteLine("    user is not a member of any groups");
                }
                foreach (DirectoryObject group in userGroups)
                {
                    if (group is Group)
                    {
                        Group _group = group as Group;
                        Console.WriteLine("    Id: {0}  UPN: {1}", _group.Id, _group.DisplayName);
                    }
                }
...