我試圖通過直接通道接口使用與SecurityMode: Message
的WSHttpBinding爲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得到正確加載。 但是,之後,我不確定是否以正確的方式調用每個函數。
事實是:該代碼段的最後一行拋出一個MessageSecurityException
與內容
客戶端無法確定基於在SspiNegotiation的目的,目標地址「http://myServerUrl」的身份服務主體名稱/ Kerberos的。目標地址標識必須是UPN標識(如acmedomain \ alice)或SPN標識(如host/bobs-machine)。
這是什麼原因造成的?