我有一个运行ASP.Net Web API应用程序的Azure工作者角色。这受ACS保护。当我使用浏览器浏览网页api时,我受到ACS的挑战,无法对Google或LiveId进行身份验证。当我进行身份验证时,我可以看到数据。访问受Azure保护的Web API站点受到来自Metro应用程序的ACS的保护
我想从Win 8 Metro Style应用程序访问相同的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/")
);
当我启动应用程序,它挑战我既可以通过谷歌或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数据。
我已经花了更多的时间在这方面比明智和已经用完了想法!任何人都可以帮忙吗?
我有同样的问题。根据所使用的登录提供程序,响应数据不同。使用facebook,结果是一个很长的字符串,例如:/ v2/facebook?cx = cHI9d3NmZWRlcmF0aW9uJnJtPWh0并使用LiveID的简称:net/v2/wsfederation?wa = wsignin1.0。我也很想知道如何从这里继续 – 2012-09-18 16:34:40
到目前为止,我已经发现,Facebook的url需要response_type = token来获取令牌。假设对其他提供商也是如此 – 2012-09-18 17:22:50
response_type =谷歌代码 – 2012-09-18 17:23:55