Как установить тип пароля в C # при использовании веб-службы SOAP - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь использовать стороннюю веб-службу SOAP в моем консольном приложении C #.Я попробовал два разных способа передачи учетных данных, как показано ниже.

//Method 1 - passing security credentials
myCardService.Credentials = new System.Net.NetworkCredential("username", 
"password");

//Method 2 - passing security credentials
System.Net.CredentialCache myCredentials = new System.Net.CredentialCache();
NetworkCredential netCred = new NetworkCredential("username", "password");
myCredentials.Add(new Uri(myCardService.Url), "Basic", netCred);
myCardService.Credentials = myCredentials;

В обоих случаях я получаю это исключение:

System.Web.Services.Protocols.SoapHeaderExceptions: Ошибка в SecurityHeader: был предоставлен недопустимый токен безопасности

Когда я пытался использовать интерфейс SOAP для использования службы, там я также получил ту же ошибку.Однако, когда я сделал WSS-Password Type = PasswordText в окне свойств инструмента, он заработал.Я не вижу способа сделать эту настройку в объектах учетных данных в коде C #.Любая помощь с благодарностью.

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Проблема была решена после того, как я установил WSE 3.0 из https://www.microsoft.com/en-us/download/details.aspx?id=14089 и изменил веб-ссылку вручную с System.Web.Services.Protocols.SoapHttpClientProtocol на Microsoft.Web.Services3.WebServicesClientProtocol в файле Reference.cs.

0 голосов
/ 22 ноября 2018

Насколько я понимаю, после того, как вы определили привязку вашей службы к типу аутентификации.

binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;

После того, как вы определили тип аутентификации, вы должны создать клиент веб-службы и выполнить следующие действия:

client.ClientCredentials.Username.Username = networkCredential.Username;
client.ClientCredentials.Password.Password = networkCredential.Password;

Это должно быть подходящим способом для передачи этих полномочий.

...