我正在使用JMeter使用Basic Auth运行测试到WCF Web服务,服务正常,凭据正确(我从SOAPUI成功运行它们)。
在我的所有研究中,我都配置了“HTTP标头管理器”和#39;和' HTTP基本身份验证'在提交时我无法看到我的实际HTTP标头有什么问题:
到目前为止我做了什么:
在对SOAPAction进行一些操作之后,我将它与可行的SOAPUI对齐,但JMeter基本身份验证仍然失败:
HTTP响应如下,但它是标准的(当我有意输入错误的凭据时,我从SOAPUI得到这个)
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns:a="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">a:InvalidSecurity</faultcode><faultstring xml:lang="en-ZA">An error occurred when verifying security for the message.</faultstring></s:Fault></s:Body></s:Envelope>
我在下面包含了绑定配置,它使用标准的basicHttpsBinding&#39; s(不是wsHttpBinding):
<service name="PayM8.Axis.PaymentsService.V1.HyperLink.HyperLinkService">
<endpoint address="" binding="basicHttpsBinding" bindingConfiguration="DefaultHttpsBinding"
contract="PayM8.Axis.PaymentsService.V1.HyperLink.IHyperLinkService"/>
</service>
<basicHttpsBinding>
<binding name="DefaultHttpsBinding" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Basic" />
</security>
</binding>
</basicHttpsBinding>
我的JMeter基本身份验证HTTP请求可能有什么问题?
答案 0 :(得分:1)
Web服务可能具有不同的身份验证类型,您获得的错误是缺少WS-Security标头。
有多种方法可以将标头添加到请求中,您可以尝试使用具有某些身份验证类型支持的JMeterSoapPlugin。
您还可以查看Take the Pain out of Load Testing Secure Web Services,了解如何绕过不同类型的Web服务身份验证。
答案 1 :(得分:0)
简而言之,Dmitri提到我们正在使用WS Security,当您配置如下所示的安全模式时(在BasicHttpBindings和wsHttpBinding下都会启用)
<security mode="TransportWithMessageCredential">
通常基本身份验证使用HTTP Header添加以下内容:
授权:基本QWxhZGRpbjpPcGVuU2VzYW1l
使用WS Security时,用户名和密码包含在SOAP有效负载本身中。当我在JMeter HTTP请求中的HTTP Body数据中添加对象时,它可以正常工作。
有用的工具,如果您不想弄清楚wsse:security对象的内容,我建议使用SOAPUI将其发送出去,然后从SOAPUI日志中获取格式化的对象。请记住将WSS密码类型设置为PasswordText。