2

次のコンポーネントがあります: 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 拡張機能。

このシナリオは可能ですか?

4

1 に答える 1

0

ActAs は必要ありません。CreateChannelWithIssuedToken メソッドを使用して WCF プロキシを作成できます。

また、(SymmetricKey の代わりに) WCF サービスとクライアントでベアラー キーを構成する必要があります。

于 2013-01-24T08:03:03.603 に答える