Я пытаюсь создать минимальный клиент для службы 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).
В чем причина этой проблемы?