我有一個運行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