如何让Web服务告诉请求需要SOAP头?

时间:2013-04-17 23:34:30

标签: web-services soap wsdl soapui

我创建了一个用Java编写并使用Eclipse& amp;生成的Web服务。 Axis2的。我在services.xml文件中创建了一个ws-security策略,并创建了一个身份验证处理程序。我对Web服务是全新的,所以如果我的陈述完全错误,请原谅。在我生成Web服务并拥有wsdl之后,我创建了一个SOAPUi项目并生成了请求。 soapui生成的请求将soap标头作为空白,因此当我运行请求时,我收到一个安全异常,认证失败。当我输入正确的标题时:

<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-12468716">
<wsu:Created>2008-06-23T13:17:13.841Z</wsu:Created>
<wsu:Expires>2008-06-23T13:22:13.841Z</wsu:Expires>
</wsu:Timestamp>
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-31571602">
<wsse:Username>alice</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">bobPW</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
<wsa:To>http://localhost:8081/axis2/services/sample01</wsa:To>
<wsa:MessageID>urn:uuid:AEDBA74A8D1FC94B631214227032877</wsa:MessageID>
<wsa:Action>urn:echo</wsa:Action>
</soapenv:Header>

然后它有效。我的wsdl缺少哪些东西告诉SoapUi在用户名和密码字段中自动生成带有问号的?标题?因为我已经将SoapUi用于其他wsdl,它自动生成这些头文件。

2 个答案:

答案 0 :(得分:1)

您可以在SOAP UI上指定用户名和密码,可以在测试请求属性选项卡或测试属性中设置。

试试这个:http://www.soapui.org/SOAP-and-WSDL/authenticating-soap-requests.html

答案 1 :(得分:0)

是的,你是对的。在您的wsdl中,您需要在请求消息结构中将这些用户名和密码字段添加为标头。您还需要在代码中实现它以从头部获取用户名和密码并相应地执行。

您也可以在测试请求属性选项卡的SOAP UI中指定用户名和密码。它将使用用户名和密码在您的外发soap请求中自动添加标头。如果需要,您还可以在首选项中禁用此功能。

谢谢, ambuj