WCFクライアントからのサードパーティWSE 3.0 Webサービスへの接続に問題があります。このKB資料に示されているように私は、カスタムバインディング・クラスを実装している:WCFクライアントからのWSE 3.0 Webサービスへの接続
http://msdn.microsoft.com/en-us/library/ms734745.aspx
問題は、Webサービスで使用されるセキュリティアサーションとしなければならないようだ - UsernameOverTransport。
私はメソッドを呼び出すしようとすると、私は次の例外を取得:
のSystem.InvalidOperationException:。。 'WseHttpBinding' '[名前空間]' が バインディング 'MyWebServiceSoap' '[ネームスペース] ' コントラクトは、 トランスポートレベルの完全性と の機密性が必要な 認証モードで構成されています。しかし、輸送 は、それは、ユーザ名、パスワード、およびCN番号を期待します。..
を完全性と機密性 を提供することはできません。ベンダから提供されたサンプルコードでは、これらの資格情報はMicrosoft.Web.Services3.Security.Tokens.UsernameTokenにバンドルされています。ここでは、ベンダーによって提供される例があります:
これは、インストール/ WSE 3.0ワット2.0アプリから正常に動作します。ここに私のWCFクライアントからのコードの抜粋です:
EndpointAddress address = new EndpointAddress(new Uri("<web service uri here>"));
WseHttpBinding binding = new WseHttpBinding(); // This is the custom binding I created per the MS KB article
binding.SecurityAssertion = WseSecurityAssertion.UsernameOverTransport;
binding.EstablishSecurityContext = false;
// Not sure about the value of either of these next two
binding.RequireDerivedKeys = true;
binding.MessageProtectionOrder = MessageProtectionOrder.SignBeforeEncrypt;
MembershipServiceSoapClient proxy = new MembershipServiceSoapClient(binding, address);
// This is where I believe the problem lies – I can’t seem to properly setup the security credentials the web service is expecting
proxy.ClientCredentials.UserName.UserName = "username";
proxy.ClientCredentials.UserName.Password = "pwd";
// How do I supply the CN number?
MyObject mo = proxy.MyMethod(); // this throws the exception
私はこの質問への答えを探してウェブを精練してきました。いくつかの情報源は私を(MS KBの記事のように)閉じてしまいますが、私はこっこを乗り越えることはできません。誰かが私を助けることができますか?
WSEが時代遅れであることをサードパーティが知っていますか? –
これを解決できましたか?誰にもアイデアはありますか?私は現在、同じことに固執しています。 –