如何使用SOAP UI连接到ASMX Web服务

时间:2019-05-20 20:28:20

标签: asp.net .net web-services soapui asmx

ASMX Web服务支持使用安全令牌的身份验证。我要求提供以下代码的服务:

    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>

我尝试使用keytool使用不同的选项来创建JKS密钥库,并将创建的密钥库添加到WS-Security配置中,但是未添加Singnature,或者为{{ 1}},AlgorithmCanonicalizationMethod

我应该在SOAP UI中设置哪些选项以连接到Web服务?

0 个答案:

没有答案