Я пытаюсь создать минимальный клиент для службы WCF, используя WSHttpBinding с SecurityMode: Message
через интерфейс прямого канала.
Мой текущий код очень прост:
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
с содержимым
Клиент не может определить имя участника службы на основе идентификатора в целевом адресе http://myServerUrl' для целей SspiNegotiation / Kerberos. Идентификатор целевого адреса должен быть идентификатором UPN (например, acmedomain \ alice) или идентификатором SPN (например, host / bobs-machine).
В чем может быть причина этой проблемы?