运用Web Services安全机制对SOAP消息加密(二)

日期: 2007-12-10 作者:赵雪山 来源:TechTarget中国

  2.4 WEBSPHERE IICE WEB SERVICE SOAP消息安全实现细节

  A. 配置

  WebSphere IICE Web Services安全机制的配置工作是由客户端和服务器端两部分组成的。就如下面的配置文件实例说描述的一样,SOAP消息会在它被发送到目标服务器之前分别被不同的句柄签名和加密。相对应的,它也会在服务器端被验证和解密。

  列表2:AXIS客户端配置文件示例

<globalConfiguration>
      <requestFlow>    
      <handler
   type="java:com.venetica.vbr.webservices.handler.X509SignHandler"/>
      <handler
   type="java:com.venetica.vbr.webservices.handler.EncryptHandler"/>     
   </requestFlow>  
   <responseFlow>
    <handler
 type="java:com.venetica.vbr.webservices.handler.X509SignHandler"/>
    <handler
 type="java:com.venetica.vbr.webservices.handler.DecryptHandler"/>
   </responseFlow>  
 </globalConfiguration>

  服务器端的配置文件和客户端的配置文件非常相像。

  B. 签名和加密/解密过程:

  SOAP消息的签名和加密/解密过程如图2所示:

  图2:SOAP消息的签名和加密/解密过程

  列表3: XML签名示例代码

public Message signSOAPEnvelope(SOAPEnvelope unsignedEnvelope) throws Exception
   {  // WSSignEnvelope signs a SOAP envelope according to the
      // WS Specification (X509 profile) and adds the signature data
      // to the envelope.
      WSSignEnvelope signer = new WSSignEnvelope();
      String alias = "username";
      String password = "password";
      signer.setUserInfo(alias, password);
      Document doc = unsignedEnvelope.getAsDocument();    
      Document signedDoc = signer.build(doc, crypto);
      // Convert the signed document into a SOAP message.
      Message signedSOAPMsg =         (org.apache.axis.Message)AxisUtil.toSOAPMessage(signedDoc);
      return signedSOAPMsg;
   }

  列表3显示了XML签名的过程:首先得到SOAP信封,接下来是获得用户证书信息、产生签名对象,然后是用此签名对象对信封进行签名,最后是从被签名的信封中产生新的SOAP消息。

  列表4:XML加密示例代码

public Message encryptSOAPEnvelope(
      SOAPEnvelope unsignedEnvelope, Message axisMessage)
      throws Exception
   {
      WSEncryptBody encrypt = new WSEncryptBody();
      // build the encrypted SOAP part
      Document doc = unsignedEnvelope.getAsDocument();
      Document encryptedDoc = encrypt.build(doc, crypto);
      // Convert the document into a SOAP message
      Message encryptedMsg =
         (Message)AxisUtil.toSOAPMessage(encryptedDoc);
      // Retrieve the desired SOAP part
      String soapPart = encryptedMsg.getSOAPPartAsString();
      ((SOAPPart)axisMessage.getSOAPPart()). setCurrentMessage(soapPart, SOAPPart.FORM_STRING);
      encryptedDoc =axisMessage.getSOAPEnvelope().getAsDocument();
      // Convert the document into a SOAP message
      Message encryptedSOAPMsg = Message)AxisUtil.toSOAPMessage(encryptedDoc);
      return encryptedSOAPMsg;
   }

  列表4显示了加密过程:首先获得加密前的SOAP信封,接下来获得用户的证书信息并以此产生加密对象,然后是应用此加密对象对获得的SOAP信封进行加密,最后为根据被加密之后的SOAP消息产生新的SOAP消息并向下传递。

  C. 消息对比:

  图3和图4分别显示了签名消息和加密消息的对比情况。

  图3:应用数字签名前后SOAP消息对比

  图4:应用安全加密前后SOAP消息对比

  3. 益处

  A 本实践不仅有效的提高了WebSphere IICE Web Services SOAP消息的安全性,而且满足了对用户具有很大意义的新需求。
  B 本实践提供了一个实现当前最新的、炙手可热的Web Services安全标准并把它应用于IBM产品的示例。
  C 本实践提供了怎样把当前较新的技术和IBM已有的解决方案整合在一起来满足用户新的需求的示例。
  D 本实践很好的显示了怎样在使用Web Services技术的IBM产品中应用Web Services安全。
  E WebSphere IICE安全实现机制拥有良好可扩展性。

  4. 结论

  本实践对WebSphere IICE的Web Services SOAP消息安全机制进行了改良。同时提供了一个把最新技术标准应用于IBM产品的示例。这样不仅满足了用户新的需求而且很好的扩展了IBM产品的应用场景。

 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • 不可不知的云加密

    对很多组织来说,适当的在云中加密数据,安全的创建并保留加密密钥,还有在理论上,防止任何云供应商的管理人员访问这些密钥等需求,在任何的云计算环境里,尤其是基础架构即服务(IaaS)领域方面,都是一些最抢手最重要的安全机制。

  • 云计算的安全方面如何进行管控?

    随着云计算日益发展和壮大,安全成了主要的关注点,目前比较成熟的管控是如何进行的?

  • 开发团队随时面临违反隐私协议的问题

    安全和隐私冲突吗?我们如何确保我们不违反自己的终端用户隐私协议?其实安全和隐私的相交之处就这二者都是组织的责任,来保护他们客户的敏感数据。

  • API设计:如何正确开发应用程序接口

    在交互组件化软件的世界里,没有比让组件之间以及组件与移动设备和浏览器之间进行连接的应用程序接口(API)更重要的东西了。