我有一个运行 ASP.Net Web API 应用程序的 Azure Worker 角色。这受 ACS 保护。当我使用浏览器浏览 Web api 时,ACS 要求我针对 Google 或 LiveId 进行身份验证。当我进行身份验证时,我可以看到数据。
我正在尝试从 Win 8 Metro Style App 访问相同的 API。我正在尝试使用 WebAuthenticationBroker。
WebAuthenticationResult webAuthenticationResult = await WebAuthenticationBroker.AuthenticateAsync(
WebAuthenticationOptions.None,
new Uri("https://xxxxx.accesscontrol.windows.net:443/v2/wsfederation?wa=wsignin1.0&wtrealm=http%3a%2f%2fyyyyy.cloudapp.net%2f"),
new Uri("http://yyyyy.cloudapp.net/")
);
当我启动应用程序时,它要求我像以前一样通过 Google 或 LiveId 进行身份验证。这通过了,我得到了一个成功的结果。
然后我使用 HttpClient 创建对 API 的调用:
HttpClient client = new HttpClient();
Uri _baseUri = new Uri("http://yyyyy.cloudapp.net/api/");
client.BaseAddress = _baseUri;
var response = client.GetAsync("Values/").Result;
var responseBodyAsText = response.Content.ReadAsStringAsync().Result;
var ids = JsonConvert.DeserializeObject<IList<int>>(responseBodyAsText);
这种工作,它似乎正确导航到 URI,但返回的有效负载是 HTML 要求我登录,而不是我期望的 JSON 数据。
我在这方面花费的时间比明智的要多,而且我的想法已经用完了!有人可以帮忙吗?