到客户机和服务器,从而实现与 1.4.1 代码的兼容性 。
服务器端策略处理
在服务器端,应用策略的方式是将其添加到每个 Axis2 .aar 服务归档中的 services.xml 配置文件 。策略可以作为 <service> 元素的子元素直接添加,以应用于服务定义的所有操作。还需要向 services.xml 添加一个 <module> 元素,这是为了告诉 Axis2 Rampart 模块必须包含在服务的配 置中。清单 4 是示例应用程序使用的经过编辑的 services.xml,其中粗体显示的是添加的模块引用和策 略信息:
清单 4. 包含内嵌策略的 services.xml
<serviceGroup>
<service name="library-username">
<messageReceivers>
<messageReceiver
class="com.sosnoski.ws.library.adb.LibraryUsernameMessageReceiverInOut"
mep="http://www.w3.org/ns/wsdl/in-out"/>
</messageReceivers>
<parameter
name="ServiceClass">com.sosnoski.ws.library.adb.LibraryUsernameImpl</parameter>
<parameter name="useOriginalwsdl">true</parameter>
<parameter name="modifyUserWSDLPortAddress">true</parameter>
<operation mep="http://www.w3.org/ns/wsdl/in-out" name="getBook"
namespace="http://ws.sosnoski.com/library/wsdl">
<actionMapping>urn:getBook</actionMapping>
<outputActionMapping>http://.../getBookResponse</outputActionMapping>
</operation>
...
<module ref="rampart"/>
<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsu="http://.../oasis-200401-wss-wssecurity-utility-1.0.xsd"
wsu:Id="UsernameToken">
<wsp:ExactlyOne>
<wsp:All>
<sp:SupportingTokens
xmlns:sp="http://docs.oasis-open.org/ws- sx/ws-securitypolicy/200702">
<wsp:Policy>
<sp:UsernameToken
sp:IncludeToken="http://.../IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:HashPassword/>
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SupportingTokens>
<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy">
<ramp:passwordCallbackClass>...PWCBHandler</ramp:passwordCallbackClass>
</ramp:RampartConfig>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
</service>
</serviceGroup>
Java Web 服务: Axis2 WS-Security基础(5)
时间:2011-10-02 ibm Dennis Sosnoski
如果对 清单 4 中的内嵌策略与 清单 3 中的基本策略进行比较,会发现多了一项内容 — 一个 <ramp:RampartConfig> 元素。该元素为策略信息提供了特定于 Rampart 的扩展,在本例中,给出 了将用于处理密码回调的类的名称。服务器代码使用回调检验客户机在请求中提供的用户名和密码组合 |