Java Web 服务: Metro 服务下的 WS-Security
2010-02-02 00:00:00 来源:WEB开发网清单 1 WSDL 告诉我们,要访问服务需要进行哪些安全处理。您需要同时在服务器端和客户端向策略信息中添加 WSDL 自定义扩展,通过用户配置细节表明如何实现安全处理。这些自定义扩展被加入到了 WSDL 中的 <wsp:Policy> 组件。下一步,我将向您展示每一端的扩展示例。
客户端应用
在客户端,使用一个名为 wsit-client.xml (这个文件名是固定的)的文件来进行 WSIT 配置。这个文件必须位于根目录的路径下(不在任何包中),或者在类路径的一个目录的 META-INF 子目录中。而 wsit-client.xml 必须是能直接提供全部 WSDL 服务或通过 <wsdl:import> 引用某个独立的 WSDL 服务定义的 WSDL 文档。无论哪一种方式,WSDL 都必须包含 WS-Policy/WS-SecurityPolicy 的全部要求和 WSIT 配置扩展。
清单 2 展示了 清单 1 WSDL 中的策略部分,通过添加一个 WSIT 自定义扩展来配置客户端 UsernameToken 支持。在这里,那个自定义扩展是 <wssc:CallbackHandlerConfiguration> 元素及其子元素,以粗体显示。两个 <wssc:CallbackHandler> 子元素定义回调类,第一个定义用户名(name="usernameHandler"),第二个定义密码(name="passwordHandler")。指定的类必须实现 javax.security.auth.callback.CallbackHandler 接口。
清单 2. 带有 WSIT 客户端扩展的 UsernameToken 策略
<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu=
"http://docs.oasis-open.org/wss/2004/01/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=".../IncludeToken/AlwaysToRecipient"/>
</wsp:Policy>
</sp:SupportingTokens>
<wssc:CallbackHandlerConfiguration wspp:visibility="private"
xmlns:wssc="http://schemas.sun.com/2006/03/wss/client"
xmlns:wspp="http://java.sun.com/xml/ns/wsit/policy">
<wssc:CallbackHandler name="usernameHandler"
classname="com.sosnoski.ws.library.metro.UserPassCallbackHandler"/>
<wssc:CallbackHandler name="passwordHandler"
classname="com.sosnoski.ws.library.metro.UserPassCallbackHandler"/>
</wssc:CallbackHandlerConfiguration>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
更多精彩
赞助商链接