在SoapUI中使用证书身份验证的STS请求

时间:2016-10-26 11:50:03

标签: certificate soapui keystore adfs sts-securitytokenservice

我必须使用带有证书签名的RequestSecurityToken请求和带有SoapUI的时间戳来获取安全令牌以在其他请求中使用它,但是我有正确实现它的问题。

以下是正确的请求,具有不同的应用程序,但具有相同的证书:

<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <u:Timestamp u:Id="TS-6EB3E416E924850AA51477473502423447">
        <u:Created>2016-10-26T09:18:22.423Z</u:Created>
        <u:Expires>2016-10-26T09:23:22.423Z</u:Expires>
    </u:Timestamp>
    <wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" u:Id="X509-6EB3E416E924850AA51477473502407442">...CCBGmgAwIBAgIKOeP(shortened)..." xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:SignedInfo>
            <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
            <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
            <ds:Reference URI="#id-6EB3E416E924850AA51477473502408445">
                <ds:Transforms>
                    <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                </ds:Transforms>
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                <ds:DigestValue>ylZ7mgRanKsz3pYpbSXtE3FoVcc=</ds:DigestValue>
            </ds:Reference>
        </ds:SignedInfo>
        <ds:SignatureValue>...PwHLpHxINEYUGoCM+Tsz9ucg(shortened)...</ds:SignatureValue>
        <ds:KeyInfo Id="KI-6EB3E416E924850AA51477473502407443">
            <wsse:SecurityTokenReference u:Id="STR-6EB3E416E924850AA51477473502407444">
                <wsse:Reference URI="#X509-6EB3E416E924850AA51477473502407442" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
            </wsse:SecurityTokenReference>
        </ds:KeyInfo>
    </ds:Signature>
</wsse:Security>

在SoapUI中,在WSS配置中,我添加了作为密钥库的证书并进行了传出配置,其中包括make timestmap和signature。在Signature中,我将其配置为二进制安全令牌,选择我的密钥库,别名和密码。我已经尝试过方法,但最接近的结果是纠正一个是:

{{1}}

在此请求中,我有回复,错误消息

  

验证邮件的安全性时发生错误。

我看到的差异之一是,在正确的请求中有两个引用具有不同的URI,而不是在SoapUI请求中,但我无法弄清楚,如何在SoapUI中模拟正确的请求。我很乐意得到一些建议,也许有人有类似的问题。

1 个答案:

答案 0 :(得分:0)

从默认的soapui

只签署soap-body元素。 但您可以从“部件:”配置中添加其他元素。

在Parts表中添加以下内容(ID,Name,Namespace,Encode):

签署时间戳内容的第一个条目

签署正文内容的第二个条目

和soapui将签署时间戳正文元素。

备注:需要在WSS条目列表中的“签名”之前添加时间戳。