Я пытаюсь использовать веб-службу через соответствующий wsdl. Эта служба зависит от аутентификации, соответствующей базовому профилю безопасности 1 Web Services Security. Элемент UsernameToken для ссылки на исходное мыльное сообщение с использованием BasicHttpBinding равен
1-asdfds
. Если я изменю привязку на
var wsHttpBinding = new WSHttpBinding(SecurityMode.TransportWithMessageCredential);
wsHttpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
wsHttpBinding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;
, то получится сообщение SOAP
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT
urn:uuid:eeb75457-f29e-4c65-b4bf-b580da26e0c5
http://www.w3.org/2005/08/addressing/anonymous
https://secure-ausomxana.crmondemand.com/Services/Integration
2011-05-02T13:30:09.360Z
2011-05-02T13:35:09.360Z
Bob
1234
http://schemas.xmlsoap.org/ws/2005/02/sc/sct
http://schemas.xmlsoap.org/ws/2005/02/trust/Issue
bI4xuyKwZ8OkQYBRnz2LDNV+zhIOnl0nwP24yI1QAwA=
256
Это кажется очень близким, однако, похоже, на самом деле зашифровал тело мыльного сообщения, чего я НЕ хочу.
Если я укажу wsHttpBinding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;
с использованием только SecurityMode.Transport
он возвращается туда, где он говорит, что он анонимен.
Какое последнее препятствие я не могу преодолеть?
Окончательное решение: Я решил опубликовать это, если это кому-то поможет, вот ' Здесь не особо сильно отличается, за исключением того, что объект UserToken заключен в узел безопасности, который требовался моему поставщику услуг, и, похоже, его вывод из моих предыдущих примеров из того, что я мог получить.
USERNAME
PASSWORD
См. С C # , Потребитель WCF SOAP, который использует аутентификацию в виде обычного текста WSSE? о том, как настроить его с помощью кода, а не конфигурации