Как подключиться к веб-сервису ASMX с помощью SOAP UI - PullRequest
0 голосов
/ 20 мая 2019

Веб-сервис ASMX поддерживает аутентификацию с использованием токенов безопасности.Я запрашиваю сервис со следующим кодом:

    service = new WebService(); 
    UsernameToken token = new UsernameToken( txtAccount.Text + @"\" + txtUser.Text, txtPass.Text, PasswordOption.SendHashed ); 
    service.RequestSoapContext.Security.Tokens.Add( token ); 
    service.RequestSoapContext.Security.Elements.Add( new MessageSignature( token ) ); 
    // this method does nothing but throws an exception if login info is incorrect
    service.LoginCheck();

Когда я подключаюсь к сервису с помощью этого кода, он работает нормально, но когда я пытаюсь подключиться к сервису с помощью SOAP UI,он возвращает The security token could not be authenticated or authorized ошибка.

Используя Fiddler, я обнаружил, что запрос из приведенного выше кода содержит подпись, которая выглядит следующим образом:

<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
        <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
        <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1" />
        <Reference URI="#Id-e9745eb3-b703-437d-8775-adc4d215e471">
            <Transforms>
                <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
            </Transforms>
            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
            <DigestValue>**************************</DigestValue>
        </Reference>
    ...
    </SignedInfo>
    <SignatureValue>***********************</SignatureValue>
    <KeyInfo>
        <wsse:SecurityTokenReference>
            <wsse:Reference URI="#SecurityToken-60491cfd-04ba-4877-aff1-f0bc16e1f178" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken" />
        </wsse:SecurityTokenReference>
    </KeyInfo>
</Signature>

Я пытался создать хранилище ключей JKS с keytool с использованием других параметров и добавил созданное хранилище ключей в конфигурации WS-Security, но Singnature либо не был добавлен, либо имел другие значения Algorithm для CanonicalizationMethod, SignatureMethod и DigestMethod.

Какие параметры я должен установить в пользовательском интерфейсе SOAP для подключения к веб-службе?

...