所以我正在使用与Azure AD绑定的默认MVC 5开箱即用模板。它在上次运行时工作正常,但现在我无法运行用户配置文件。以前工作得很好的东西。我测试了我知道要工作的第二个项目,现在我收到同样的错误。如果你查看默认模板中的代码,它看起来像这样。
public async Task<ActionResult> UserProfile()
{
string tenantId = ClaimsPrincipal.Current.FindFirst(TenantIdClaimType).Value;
// Get a token for calling the Windows Azure Active Directory Graph
AuthenticationContext authContext = new AuthenticationContext(String.Format(CultureInfo.InvariantCulture, LoginUrl, tenantId));
ClientCredential credential = new ClientCredential(AppPrincipalId, AppKey);
AuthenticationResult assertionCredential = authContext.AcquireToken(GraphUrl, credential);
string authHeader = assertionCredential.CreateAuthorizationHeader();
string requestUrl = String.Format(
CultureInfo.InvariantCulture,
GraphUserUrl,
HttpUtility.UrlEncode(tenantId),
HttpUtility.UrlEncode(User.Identity.Name));
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUrl);
request.Headers.TryAddWithoutValidation("Authorization", authHeader);
HttpResponseMessage response = await client.SendAsync(request);
string responseString = await response.Content.ReadAsStringAsync();
UserProfile profile = JsonConvert.DeserializeObject<UserProfile>(responseString);
return View(profile);
}
这条线路特别失败:
AuthenticationResult assertionCredential = authContext.AcquireToken(GraphUrl, credential);
我检查了我的Azure门户网站,所有端点都是正确的。在这方面没有任何改变。堆栈跟踪没有给我任何有意义的东西。除了网页上的HTTP 400错误,以及Chrome开发工具内部,我看到HTTP 500服务器错误。除此之外,一切似乎都在起作用。不确定Azure是否在过去4天内发生了更改。但是我找不到关于这个问题的任何信息。
我正在使用VS 2013.此版本尚未提供大量文档,因为AD Graph API的设置似乎与示例中显示的不同。任何有关如何进一步调试的帮助将不胜感激。
答案 0 :(得分:3)
尝试进入您的nuget包管理器并更新Active Directory身份验证库。
我正在用这个问题撞到墙上,直到我意识到我在这个库的1.0版本上,当前是2.1.2。