我试图通过直接通道接口使用与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)。
这是什么原因造成的?