0

我创建了一个 Web 服务,用 Java 编写并使用 Eclipse 和 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,它确实会自动生成这些标头。

4

2 回答 2

1

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

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

于 2013-04-18T02:17:46.630 回答
0

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

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

谢谢,阿布吉

于 2013-12-13T13:10:39.077 回答