【发布时间】:2019-07-26 06:49:41
【问题描述】:
我正在尝试使用下面提到的代码在 Web 应用程序中从 AzureAD 获取所有 office365 用户的列表。但是, authContext.AcquireTokenAsync(resrouce, clientCredential) 永远不会返回控制权。我已经为控制台应用程序尝试了下面的代码,它运行良好。但是,我很想知道为什么代码不适用于 Web,或者我必须进行哪些修改才能使代码在 Web 中工作。
public static async Task<string> AcquireMyToken()
{
string clientId = "";
string secrect = "";
string resrouce = "https://graph.microsoft.com";
string authority = "https://login.microsoftonline.com/tenanId";
AuthenticationContext authContext = new AuthenticationContext(authority);
ClientCredential clientCredential = new ClientCredential(clientId, secrect);
AuthenticationResult authResult = await authContext.AcquireTokenAsync(resrouce, clientCredential);
return authResult.AccessToken;
}
public static async void ListFiles(string accessToken)
{
var graphClient = new GraphServiceClient(new DelegateAuthenticationProvider(
(requestMessage) =>
{
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", accessToken);
return Task.FromResult(0);
}));
var users = await graphClient.Users.Request().GetAsync();
}
【问题讨论】:
-
如果您提供带有超时值的
CancellationToken会发生什么? -
@Dai,我对 Azure 还是很陌生。您是说将取消令牌传递给 AcquireTokenAync 函数吗?
-
@jay 如果您有任何疑问,请随时在此评论中提问。谢谢。
标签: azure asp.net-web-api c#-4.0 azure-active-directory office365api