WebServicesClientProtocol Предоставлен неверный токен безопасности - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь использовать SOAP веб-службы с прокси-классом, созданным инструментом wsdl.exe.Мой прокси-класс наследуется от WebServicesClientProtocol.

public partial class ProxyClass : Microsoft.Web.Services3.WebServicesClientProtocol

Мы работали со многими провайдерами, и мы всегда использовали этот способ для использования их веб-сервисов, когда их SOAP.Но теперь мне дали имя пользователя и пароль для вызова методов, которые они предоставляют.

Из SoapUI я мог настроить аутентификацию, и мой SOAP-запрос (POST) включает тег безопасности, который выглядит следующим образом:

<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <wsse:UsernameToken wsu:Id="UsernameToken-F553155D3B9F83F7E515385814519794">
        <wsse:Username>user</wsse:Username>
        <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password>
        <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">yCDGvunHkyT0Hk2pCXXiSA==</wsse:Nonce>
        <wsu:Created>2018-10-03T15:44:11.979Z</wsu:Created>
    </wsse:UsernameToken>
</wsse:Security>

Ответ был, как я и ожидал.Но проблема в том, когда я пытаюсь сделать то же самое в моем клиентском приложении.Когда мне нужно вызвать метод, я создаю экземпляр объекта моего прокси-класса и использую следующие строки:

ProxyClass service = new ProxyClass (this.urlWebService);
UsernameToken token = new UsernameToken(USERNAME, PASSWORD, PasswordOption.SendPlainText);
service.RequestSoapContext.Security.Tokens.Add(token);
...
service.Method(...); 

Где USERNAME и PASSWORD - это константы, содержащие ту же информацию, которую я использовал для моего запроса из SoapUI.

Когда я отлаживаю приложение, при вызове Invoke внутри службы генерируется исключение. Метод:

Предоставлен недопустимый токен безопасности (произошла ошибка при обработке токена имени пользователя) ruSystem.Web.Services.*

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

...