次のコンポーネントがあります: WPF アプリケーション、アイデンティティ サーバー、WCF Web サービス、
WPF アプリケーションは WebBrowser コントロールを使用して、WS-Federation を使用して Thintecture Identity Server を使用して認証します。Identity Server は Home Realm Discovery を有効にしており、Facebook、Live ID、および Google を使用した認証を許可しています。認証後、SecurityToken に変換する RequestSecurityTokenResponse メッセージを取得します。
この SecurityToken を取得したら、WebService を呼び出したいと思います。Thintecture Identity Server から再度発行される ActAsToken を作成する必要があると思いますが、構成できません。
var serviceAddress = "http://localhost:7397/Service1.svc";
var token3 = token2.ToSecurityToken();
var binding = new WS2007FederationHttpBinding(WSFederationHttpSecurityMode.Message);
binding.Security.Message.IssuedKeyType = System.IdentityModel.Tokens.SecurityKeyType.SymmetricKey;
binding.Security.Message.IssuerAddress = new EndpointAddress("https://dev3.example.com/Identity/issue/wsfed");
binding.Security.Message.IssuerBinding = new WS2007HttpBinding();
var factory = new ChannelFactory<IService1Channel>(binding,
new EndpointAddress(
new Uri(serviceAddress),
new DnsEndpointIdentity("dev3.example.com")));
factory.Credentials.SupportInteractive = false;
var proxy = factory.CreateChannelWithActAsToken(token3);
{
try
{
var output = proxy.GetData(1);
MessageBox.Show(output);
proxy.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
しかし、例外があります。
WebService は、ID とアクセスを使用して構成されています... VS 拡張機能。
このシナリオは可能ですか?