我正在开发一个简单的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
但不是获得所需的结果。请帮忙!!!
答案 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: