ここで説明するように、Windows 8ストアアプリにACSトークンを取得させる手順を実行しました: WebAuthenticationBrokerはWindows8Metroアプリのリリース候補後に機能しますか
ただし、WebAuthenticationResultオブジェクトのResponseDataプロパティには、ACSで指定されたコールバックURIのみが含まれ、トークン情報は含まれていません。私のコードの下。
Windows8クライアントの認証方法
private async void Authenticate()
{
WebAuthenticationResult webAuthenticationResult = await WebAuthenticationBroker.AuthenticateAsync(
WebAuthenticationOptions.None,
new Uri("https://myACSnamespace.accesscontrol.windows.net:443/v2/wsfederation?wa=wsignin1.0&wtrealm=http://localhost:12714/"),
new Uri("http://mypublicIPaddress:80/WebAppMVCAPI/api/federation/end"));
証明書利用者アプリケーションのリターンURLがに設定されているhttp://mypublicIPaddress:80/WebAppMVCAPI/api/federation/en
Webアプリケーション上の私のコントローラーは次のようにプログラムされています。
public class FederationController : ApiController
{
protected virtual string ExtractBootstrapToken()
{
return "Hello World";
//return HttpContext.Current.User.BootstrapToken();
}
[HttpGet]
public string Get()
{
return "Hello Get World";
}
[HttpPost]
public HttpResponseMessage Post()
{
var response = this.Request.CreateResponse(HttpStatusCode.Redirect);
response.Headers.Add("Location", "/WebAppMVCAPI/api/federation/end?acsToken=" + ExtractBootstrapToken());
return response;
}
}
}
ご想像のとおり、WebアプリケーションはIISサーバーで実行され、ポート80でリッスンしています。ルーターは必要に応じて着信要求を転送するように構成されており、Visual StudioでWebアプリケーションを起動すると、インターネットからアプリケーションにアクセスできます。亭主。
アイデアは、Windows8ストアアプリにFacebookログインでACSからトークンを取得させることです。win8クライアントを起動すると、アプリケーションにFacebookのログインページが表示されます。クレデンシャルで正常にログインしました。ただし、webauthenticationresult.responsedataプロパティを見ると、コールバックURIのみが表示されます。また、ACSがコールバックURIに何かを投稿しようとしたファイアウォールのログが表示されません。