2009-09-01 12 views
3

ダイレクトチャネルインターフェイスでWSHttpBindingをSecurityMode: Messageで使用して、WCFサービスの最小限のクライアントを構築しようとしています。チャネルインターフェイス経由でメッセージレベルのセキュリティをサポートする最小限のクライアント

私の現在のコードは非常に簡単です:

EndpointIdentity i = EndpointIdentity.CreateX509CertificateIdentity(clientCertificate); 
EndpointAddress a = new EndpointAddress(new Uri("http://myServerUrl"), i); 
WSHttpBinding b= new WSHttpBinding(SecurityMode.Message); 
ChannelFactory<IRequestChannel> channelFactory = new ChannelFactory<IRequestChannel>(b, a); 
channelFactory.Open(); 
IRequestChannel channel = channelFactory.CreateChannel(); 
channel.Open(); 
Message response = channel.Request(requestMessage); 

clientCertificateが正しくロードされます。 しかし、その後、すべての関数を正しい方法で呼び出すかどうかはわかりません。

事実である:コードスニペットの最後の行はSspiNegotiationの目的のためのターゲットアドレス「http://myServerUrl」内のアイデンティティに基づいて、サービスプリンシパル名を判断できないコンテンツ

クライアントとMessageSecurityExceptionスロー/ Kerberos。ターゲットアドレスIDは、UPN ID(acmedomain \ aliceなど)またはSPN ID(host/bobs-machineなど)である必要があります。

この問題の原因は何ですか?

答えて

0

デフォルトのClientCredentialTypeはWindowsのようです。そのため、Sspi/Kerberosに関連するエラーが発生しています。証明書を資格情報の種類として指定し、実際の証明書をクライアントの資格情報コンテナに設定する必要があります。詳細については、このリンクの「クライアント」のセクションをご覧ください。

http://msdn.microsoft.com/en-us/library/ms733098.aspx

関連する問題