У меня возникли трудности с подключением к стороннему веб-сервису WSE 3.0 от клиента WCF. Я реализовал пользовательский класс связывания, как указано в этой статье KB:Подключение к веб-службе WSE 3.0 от клиента WCF
http://msdn.microsoft.com/en-us/library/ms734745.aspx
Проблема, кажется, что нужно сделать с утверждением безопасности, используемой веб-службы - UsernameOverTransport.
При попытке вызвать метод, я получаю следующее исключение:
System.InvalidOperationException:. В 'WseHttpBinding' '[имена] обязательный для 'MyWebServiceSoap'' [. namespace] ' договор сконфигурирован с использованием режима аутентификации , который требует целостности уровня транспорта и конфиденциальности. Однако транспортный не может обеспечить целостность и конфиденциальность ..
Он ожидает имя пользователя, пароль и CN номер. В примере кода, предоставленном нам поставщиком, эти учетные данные поставляются в Microsoft.Web.Services3.Security.Tokens.UsernameToken. Вот пример поставляется продавцом:
Это прекрасно работает с 2.0 приложения ж/WSE 3.0 установлен. Вот фрагмент кода из моего клиента WCF:
EndpointAddress address = new EndpointAddress(new Uri("<web service uri here>"));
WseHttpBinding binding = new WseHttpBinding(); // This is the custom binding I created per the MS KB article
binding.SecurityAssertion = WseSecurityAssertion.UsernameOverTransport;
binding.EstablishSecurityContext = false;
// Not sure about the value of either of these next two
binding.RequireDerivedKeys = true;
binding.MessageProtectionOrder = MessageProtectionOrder.SignBeforeEncrypt;
MembershipServiceSoapClient proxy = new MembershipServiceSoapClient(binding, address);
// This is where I believe the problem lies – I can’t seem to properly setup the security credentials the web service is expecting
proxy.ClientCredentials.UserName.UserName = "username";
proxy.ClientCredentials.UserName.Password = "pwd";
// How do I supply the CN number?
MyObject mo = proxy.MyMethod(); // this throws the exception
Я рыскал в Интернете в поисках ответа на этот вопрос. Некоторые источники меня закрывают (например, в статье MS KB), но я не могу справиться с горбом. Кто-нибудь может мне помочь?
Просто убедитесь, что ваша сторонняя сторона знает, что WSE устарела? –
Удалось ли вам это решить? У кого-нибудь есть идея? Я сейчас застрял на одном и том же. –