WEB开发网
开发学院软件开发Java Java Web 服务: Metro 服务下的 WS-Security 阅读

Java Web 服务: Metro 服务下的 WS-Security

 2010-02-02 00:00:00 来源:WEB开发网   
核心提示: 在服务器端,WSIT 要求在 WEB-INF/sun-jaxws.xml 配置文件(在 “Metro 简介” 中介绍过)中指定的位置提供 WSDL,Java Web 服务: Metro 服务下的 WS-Security(2),所提供的 WSDL 必须包含用于为 WSIT

在服务器端,WSIT 要求在 WEB-INF/sun-jaxws.xml 配置文件(在 “Metro 简介” 中介绍过)中指定的位置提供 WSDL。所提供的 WSDL 必须包含用于为 WSIT 配置用户信息的自定义扩展,但是这些自定义扩展在为响应对服务端点的 HTT PGET 请求而提供的 WSDL 版本中被删除掉了。

这些用于配置 WSIT 用户信息的自定义扩展在服务器端和客户端看起来一样,但是在用于扩展元素的 XML 名称空间中不同。在客户端,名称空间是 http://schemas.sun.com/2006/03/wss/client;在服务器端,名称空间是 http://schemas.sun.com/2006/03/wss/server。

Metro 中的 UsernameToken

“Axis2 WS-Security 基础” 使用了一个简单的 UsernameToken 例子来介绍 Axis2/Rampart 环境下的 WS-Security。UsernameToken 提供了一种通过 WS-Security 来表示 “用户名/密码” 对的标准方法。密码信息可以以纯文本方式(通常,这种方式只有在同时配置了传输层安全协议(Transport Layer Security,TLS)或者使用 WS-Security 加密时才会在生产中使用 — 但是这种方式确实便于测试)或者以散列值方式发送。

要在 Metro 上实现一个简单的纯文本格式的 UsernameToken 示例,您需要在 WSDL 服务定义中恰当定义 WS-Policy/WS-SecurityPolicy。清单 1 展示了 “Metro 简介” 中使用过的一个基础 WSDL 服务定义的修订版,包含了在从客户端到服务器的请求上要求 UsernameToken 的策略信息。与策略本身一样,<wsdl:binding> 中的策略引用以粗体显示。

清单 1. 纯文本 UsernameToken WSDL

<?xml version="1.0" encoding="UTF-8"?> 
<wsdl:definitions targetNamespace="http://ws.sosnoski.com/library/wsdl" 
  xmlns:wns="http://ws.sosnoski.com/library/wsdl" 
  xmlns:tns="http://ws.sosnoski.com/library/types" 
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
  xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"> 
 <wsdl:types> 
  ... 
 </wsdl:types> 
 
 <wsdl:message name="getBookRequest"> 
  <wsdl:part element="wns:getBook" name="parameters"/> 
 </wsdl:message> 
 ... 
 
 <wsdl:portType name="Library"> 
  <wsdl:operation name="getBook"> 
   <wsdl:input message="wns:getBookRequest" name="getBookRequest"/> 
   <wsdl:output message="wns:getBookResponse" name="getBookResponse"/> 
  </wsdl:operation> 
  ... 
 </wsdl:portType> 
 
 <wsdl:binding name="LibrarySoapBinding" type="wns:Library"> 
  
  <wsp:PolicyReference xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" 
    URI="#UsernameToken"/> 
 
  <wsdlsoap:binding style="document" 
    transport="http://schemas.xmlsoap.org/soap/http"/> 
  <wsdl:operation name="getBook"> 
   <wsdlsoap:operation soapAction="urn:getBook"/> 
   <wsdl:input name="getBookRequest"> 
    <wsdlsoap:body use="literal"/> 
   </wsdl:input> 
   <wsdl:output name="getBookResponse"> 
    <wsdlsoap:body use="literal"/> 
   </wsdl:output> 
  </wsdl:operation> 
  ... 
 </wsdl:binding> 
 
 <wsdl:service name="MetroLibrary"> 
  <wsdl:port binding="wns:LibrarySoapBinding" name="library"> 
   <wsdlsoap:address location="http://localhost:8080/metro-library-username"/> 
  </wsdl:port> 
 </wsdl:service> 
  
 <!-- Policy for Username Token with plaintext password, sent from client to 
  server only --> 
 <wsp:Policy wsu:Id="UsernameToken" xmlns:wsu= 
   "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
   xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"> 
  <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> 
   </wsp:All> 
  </wsp:ExactlyOne> 
 </wsp:Policy> 
 
</wsdl:definitions>

上一页  1 2 3 4 5 6 7  下一页

Tags:Java Web 服务

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接