我创建了一个 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,它确实会自动生成这些标头。