使用c#console应用程序查询Azure AD

时间:2016-11-21 16:40:28

标签: c# azure-ad-graph-api

我正在开发一个简单的c#控制台应用程序来查询Azure AD并获取给定用户的详细信息。我找到了很多关于查询天蓝色AD的有用文章,但没有一个符合我的目的。在GitHub上发布的示例代码对于我的简单要求而言过于冗长和复杂。 我正在使用下面的代码,但是我收到了令牌错误:

var authContext = new AuthenticationContext("AUTHORITY");
            string token;
            try
            {
                //var authresult = authContext.AcquireToken("MYAPP_ID", "MYAPP_CLIENTID", "MYAPP_REDIRECTURI");
                var authresult = authContext.AcquireToken("https://graph.windows.net", "23b1c65e-5a20-4b88-a474-85c0845782c7", "https://localhost/");
                token = authresult.AccessToken;
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex);
            }

我进一步搜索了令牌访问权限,并在广告中注册了我的应用,并使用了以下代码:

git rebase -i

但不是获得所需的结果。请帮忙!!!

1 个答案:

答案 0 :(得分:2)

如果您想使用图表API获取用户信息。您需要将令牌添加到请求标头中,如下所示:

client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", TokenForUser);

以下是可以帮助列出用户信息的代码段,希望它能为您提供一些提示:

 string AuthString = "https://login.microsoftonline.com/";
 string ResourceUrl = "https://graph.windows.net";
 string ClientId = "***";
 var redirectUri = new Uri("https://localhost");
 string  TenantId = "e4162ad0-e9e3-4a16-bf40-0d8a906a06d4";

 AuthenticationContext authenticationContext = new AuthenticationContext(AuthString+TenantId, false);
 AuthenticationResult userAuthnResult = await authenticationContext.AcquireTokenAsync(ResourceUrl,
     ClientId, redirectUri, new PlatformParameters(PromptBehavior.RefreshSession));
 TokenForUser = userAuthnResult.AccessToken;
 var client = new HttpClient();

 var uri = $"https://graph.windows.net/{TenantId}/users?api-version=1.6";
 client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", TokenForUser);
 var response = await client.GetAsync(uri);
 if (response.Content != null)
 {
     var responseString = await response.Content.ReadAsStringAsync();
     Console.WriteLine(responseString);
 }

我们可以在Azure AD本机应用程序中找到ClientId,RedirectURi,tenantId,ResourceUrl: