ASP.Net Web API アプリケーションを実行する Azure Worker ロールがあります。これは ACS によって保護されます。ブラウザを使用して Web API を参照すると、ACS から Google または LiveId に対して認証するよう求められます。認証すると、データを見ることができます。
Win 8 Metro スタイル アプリから同じ 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 に正しくナビゲートしているように見えますが、戻ってくるペイロードは、期待している JSON データではなく、ログインを要求する HTML です。
私はこれに賢明な時間よりも多くの時間を費やしており、アイデアが尽きてしまいました! 誰でも助けてもらえますか?