background image

Java Web 服务: Axis2 WS-Security 基础详解

安全性对于众多企业服务来说都是一个重要需求。并且,尝试实现自己的安全性也颇具风
险,因为任何微小的疏忽都会导致严重的安全漏洞。这些特征引起了人们对安全处理标准

 

化的兴趣,许多专家为标准作出贡献并避免出现任何个人的疏漏。基于 SOAP   

的 Web 服

 

务可以使用广泛支持的 WS-Security 和相关标准来满足它们的安全需求,允许针对每种服
务相应地配置安全性。

  Apache Axis2 

 

通过 Rampart 模块支持这些安全标准(  

见 参考资料)。在本文中,您将看

 

到如何为 Axis2 

 

安装、配置和使用 Rampart 以实现基本的安全功能,即在一个服务请求中

 

发送用户名和密码。在本系列的后续文章中,您将理解如何使用 Rampart 实现更加复杂的
安全性。

  WS-Security

  WS-Security 

 

是向 SOAP Web 服务消息交换添加安全性的一种标准(  

见 参考资料)。它

 

使用一个 SOAP 消息头部元素将安全信息附加到消息中,使用令牌(token)的形式传递不
同类型的声明(包括名称、身份、密匙、组、特权、功能等等)以及加密和数字签名信息。WS-
Security 支持多种形式的令牌、多个可信任域、多种签名格式和多种加密技术,因此大多数
情况下头部信息需要针对每种内容包含特定的格式和算法识别。附加的信息会导致头部信

 

 

息产生复杂的结构,如 清单 1 所示(进行了大量编辑)— 包含签名和加密的样例消息:

 

清单 1. 包含签名和加密的样例消息
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" ...>
<soap:Header>
  <wsse:Security soap:mustUnderstand="1">
   <wsu:Timestamp wsu:Id="Timestamp-d2e3c4aa-da82-4138-973d-66b596d66b2f">
    <wsu:Created>2006-07-11T21:59:32Z</wsu:Created>
    <wsu:Expires>2006-07-12T06:19:32Z</wsu:Expires>
   </wsu:Timestamp>
   <wsse:BinarySecurityToken ValueType="...-x509-token-profile-1.0#X509v3"
     EncodingType="...-wss-soap-message-security-1.0#Base64Binary"
     xmlns:wsu="...oasis-200401-wss-wssecurity-utility-1.0.xsd"
     wsu:Id="SecurityToken-faa295...">MIIEC56MQswCQY...</wsse:BinarySecurityToken>
   <xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
    <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
    <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
     <wsse:SecurityTokenReference>
      <wsse:KeyIdentifier ValueType=