如何使用JMeter对webservice进行身份验证?

时间:2016-12-16 11:32:20

标签: web-services jmeter

我使用JMeter作为代理来记录我们的Web服务的测试场景的所有请求,以及JMeter创建的请求和一个HTTP授权管理器,以及每个请求的存储授权。

但是当我启动这个场景时,我会收到所有请求的401响应代码。我在Thread Group中移动HTTP授权管理器,但我仍然得到401代码。

我们WS的所有请求都需要身份验证。

如何为每个请求在一个位置添加身份验证?并且,如何参数化它们?

谢谢,丹尼斯

1 个答案:

答案 0 :(得分:0)

答案可能因Web服务安全类型而异,并且有很多选项,例如Web服务可能需要自定义身份验证标头,自定义HTTP标头,自定义Cookie,自定义标记等等。

  • 图表A:未经身份验证的请求

    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:web="http://www.webserviceX.NET">
       <soap:Header/>
       <soap:Body>
          <web:GetCitiesByCountry>
             <!--Optional:-->
             <web:CountryName>India</web:CountryName>
          </web:GetCitiesByCountry>
       </soap:Body>
    </soap:Envelope>
    
  • 图表B:使用用户名/密码验证的请求

    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:web="http://www.webserviceX.NET">
        <soap:Header>
            <wsse:Security soap:mustUnderstand="true"
                           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-29FBADA106D95AD8E114818886210611">
                    <wsse:Username>johndoe</wsse:Username>
                    <wsse:Password
                            Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">
                        secret
                    </wsse:Password>
                    <wsse:Nonce
                            EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">
                        jnXB+PJ34M7aqfDU88glzg==
                    </wsse:Nonce>
                    <wsu:Created>2016-12-16T11:43:40.755Z</wsu:Created>
                </wsse:UsernameToken>
            </wsse:Security>
        </soap:Header>
        <soap:Body>
            <web:GetCitiesByCountry>
                <!--Optional:-->
                <web:CountryName>India</web:CountryName>
            </web:GetCitiesByCountry>
        </soap:Body>
    </soap:Envelope>
    

参数化请求的最常用方法是使用CSV Data Set Config

有关在JMeter测试中绕过的某些Web服务身份验证类型的详细说明,请参阅Take the Pain out of Load Testing Secure Web Services文章。