当我们从 Axis 1.6.2/Rampart 1.6.2 升级到 Axis 1.7.2/Rampart 1.7.0 时,密码处理程序未被调用
Password Handler not getting called when we upgrade from Axis 1.6.2 / Rampart 1.6.2 to Axis 1.7.2 / Rampart 1.7.0
我们将 WAR 与 axis2 网络服务打包在 /WEB-INF/services 中。
它是使用 Axis 1.5.1 开发的,几年前升级到 Axis 1.6.2/Rampart 1.6.2。现在我们需要升级到 Axis 1.7.2 / rampart 1.7.0 .
我们将 usernameSecurity 添加到我们的网络服务中。我们还打包了一个示例 Web 服务客户端应用程序。一切正常。但是一旦我们升级到 Axis 1.7.2/Rampart 1.7.0,就不会调用 PasswordCallBackHandler.handle 方法。因此我们的 web 服务客户端中断。这就是我添加密码回调客户端的方式。axis2.xml 用于在请求 SOAP 中添加 username/pwd。
<axisconfig name="AxisJava2.0">
<module ref="rampart"/>
<parameter name="OutflowSecurity">
<action>
<items>UsernameToken</items>
<user>system</user>
<passwordCallbackClass>com.web.ws.connector.CSPWCBHandler</passwordCallbackClass>
<passwordType>PasswordText</passwordType>
</action>
我的 services.xml 如下所示:
<service name="labware_weblims_listFunctions" targetNamespace="http://www.labware.com/webservice">
<description>Service description for labware_weblims_listFunctions</description>
<schema schemaNamespace="http://www.labware.com/webservice"/>
<parameter name="ServiceClass">com.web.ws.service.ListService</parameter>
<parameter name="disasbleREST">true</parameter>
<operation name="listMethods">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</operation>
<module ref="soapmonitor"/>
<module ref="rampart"/>
<parameter name="InflowSecurity">
<action>
<items>UsernameToken</items>
<passwordCallbackClass>com.web.ws.control.PWCBHandler</passwordCallbackClass>
</action>
</parameter>
</service>
当我升级到 Axis 1.7.2 时,事情发生了变化。不调用 PasswordCallBackHandlers。
我搜索了 Services.xml dtd 但没有找到。我猜我必须将 CallBackHandlers 添加为 RampartConfig。有没有其他的可以解决这个问题。任何帮助将不胜感激。
我能够解决问题。我的问题中列出的 services.xml 和 client.axis2.xml 中的 PasswordCallBackHandler 条目是 Apache Rampart 1.0 样式配置。他们使用 Axis 1.5.1 和 Axis 1.6.2 库。 Axis2 1.7.0 中已停止支持 Rampart 1.0 配置。请看下面link
https://axis.apache.org/axis2/java/rampart/release-notes/1.7.0.html
标准的工作方式是创建一个策略文件并将 PasswordCallBackHandler 添加为 RampartConfig。如果有人需要,我会很乐意提供帮助。
我们将 WAR 与 axis2 网络服务打包在 /WEB-INF/services 中。
它是使用 Axis 1.5.1 开发的,几年前升级到 Axis 1.6.2/Rampart 1.6.2。现在我们需要升级到 Axis 1.7.2 / rampart 1.7.0 .
我们将 usernameSecurity 添加到我们的网络服务中。我们还打包了一个示例 Web 服务客户端应用程序。一切正常。但是一旦我们升级到 Axis 1.7.2/Rampart 1.7.0,就不会调用 PasswordCallBackHandler.handle 方法。因此我们的 web 服务客户端中断。这就是我添加密码回调客户端的方式。axis2.xml 用于在请求 SOAP 中添加 username/pwd。
<axisconfig name="AxisJava2.0">
<module ref="rampart"/>
<parameter name="OutflowSecurity">
<action>
<items>UsernameToken</items>
<user>system</user>
<passwordCallbackClass>com.web.ws.connector.CSPWCBHandler</passwordCallbackClass>
<passwordType>PasswordText</passwordType>
</action>
我的 services.xml 如下所示:
<service name="labware_weblims_listFunctions" targetNamespace="http://www.labware.com/webservice">
<description>Service description for labware_weblims_listFunctions</description>
<schema schemaNamespace="http://www.labware.com/webservice"/>
<parameter name="ServiceClass">com.web.ws.service.ListService</parameter>
<parameter name="disasbleREST">true</parameter>
<operation name="listMethods">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</operation>
<module ref="soapmonitor"/>
<module ref="rampart"/>
<parameter name="InflowSecurity">
<action>
<items>UsernameToken</items>
<passwordCallbackClass>com.web.ws.control.PWCBHandler</passwordCallbackClass>
</action>
</parameter>
</service>
当我升级到 Axis 1.7.2 时,事情发生了变化。不调用 PasswordCallBackHandlers。
我搜索了 Services.xml dtd 但没有找到。我猜我必须将 CallBackHandlers 添加为 RampartConfig。有没有其他的可以解决这个问题。任何帮助将不胜感激。
我能够解决问题。我的问题中列出的 services.xml 和 client.axis2.xml 中的 PasswordCallBackHandler 条目是 Apache Rampart 1.0 样式配置。他们使用 Axis 1.5.1 和 Axis 1.6.2 库。 Axis2 1.7.0 中已停止支持 Rampart 1.0 配置。请看下面link
https://axis.apache.org/axis2/java/rampart/release-notes/1.7.0.html
标准的工作方式是创建一个策略文件并将 PasswordCallBackHandler 添加为 RampartConfig。如果有人需要,我会很乐意提供帮助。