我希望写自定义政策。我会如何开始。 我无法找到任何关于此的博客。 我的问题是我的客户端已经修复了头认证请求。所以Username-token认证场景对我来说是完美的。但是客户端无法按照所需的场景发送正确的格式请求。 它以其他格式发送用户名密码
<soapenv:Header>
<pr:authentication soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xmlns:pr="http://webservices.im.com/ProxyService">
<pr:user>mwp</pr:user>
<pr:password>MWp003</pr:password>
</pr:authentication>
</soapenv:Header>
但它不能在wso2 ESB用户名 - 令牌场景中工作。期望输入标头就像这样
<soapenv:Header>
<wsse:Security 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" soapenv:mustUnderstand="1">
<wsu:Timestamp wsu:Id="TS-4">
<wsu:Created>2014-06-02T07:15:21Z</wsu:Created>
<wsu:Expires>2014-06-02T08:38:41Z</wsu:Expires>
</wsu:Timestamp>
<wsse:UsernameToken wsu:Id="UsernameToken-3">
<wsse:Username>admin</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">admin</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">byWKVY4stEATvTqaoNMswQ==</wsse:Nonce>
<wsu:Created>2014-06-02T07:15:21.304Z</wsu:Created>
</wsse:UsernameToken>
</wsse: >
</soapenv:Header
那么解决这个问题的方法是什么呢? 提前谢谢。
答案 0 :(得分:1)
ESB使用WS-Security规范来保护Web服务。因此,客户端需要根据该规范发送消息。但在您的情况下,似乎您的客户端在自定义SOAP标头中发送用户/密码。然后ESB无法验证这些。可以有两种解决方案。
您需要修改您的客户端以符合WS-Security规范。
您可以编写一些自定义处理程序(axis2处理程序)来读取邮件中的自定义标题,并根据用户存储验证用户/密码。
基本上,WS-Security消息也由名为Apache Rampart
的axis2处理程序验证。