UserProfile()上的Azure Active Directory图谱API HTTP 400错误请求;

时间:2014-02-11 02:15:54

标签: azure https active-directory single-sign-on adfs

所以我正在使用与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的设置似乎与示例中显示的不同。任何有关如何进一步调试的帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

尝试进入您的nuget包管理器并更新Active Directory身份验证库。

我正在用这个问题撞到墙上,直到我意识到我在这个库的1.0版本上,当前是2.1.2。