利用WSE 加密SOAP报文(2)

原创 2004年03月22日 15:50:00

一个加密后的SOAP 报文

下面的SOAP报文示例有一个payment节点,含有一些敏感的客户信息.

OAP:Envelope SOAP:xmlsn="http://www.w3.org/2002/12/SOAP-envelope">

  <SOAP:Header>

  ...

  </SOAP:Header>

  <SOAP:Body>

  ...

    <x:Order Type="Purchase" x:xmlns="http://example.com/order">

      <x:Payment Type="CreditCard">

        <x:CreditCard Type="Visa">

          <x:CardNumber>123456789123456</CardNumber>

          <x:ExperationDate>1108</ExperationDate>

        </x:CreditCard>

      </x:Payment>

      ...

    </x:Order>

    ...

  </SOAP:Body>

</SOAP:Envelope>

因为payment节点含有敏感的数据,所以它应该被加密.下面的例子显示了相同的信息,但是payment节点被EncryptedData节点代替了.EncryptedData节点内含有对payment 节点内部内容加密后的密文. EncryptedData节点是参考自security头中的DataReference 节点的

<SOAP:Envelope SOAP:xmlsn="http://www.w3.org/2002/12/SOAP-envelope"

  xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"

  xmlns:xsig="http://www.w3.org/2000/09/xmldsig#"

  xmlns:WSse="http://schemas.xmlSOAP.org/WS/2002/04/secext">

  <SOAP:Header>

    <WSse:Security>

      <xenc:ReferenceList>

        <xenc:DataReference URI="#OrderID"/>

      </xenc:ReferenceList>

    </WSse:Security>  ...

  </SOAP:Header>

  <SOAP:Body>

  ...

    <x:Order Type="Purchase" x:xmlns="http://example.com/order">

      <xenc:EncryptedData Id="OrderId">

        <xenc:EncryptionMethod

          Algorithm= "http://www.w3.org/2001/04/xmlenc#tripledes-cbc"

        <xsig:KeyInfo>

          <xsig:KeyName>My Symmetric Key</xsig:KeyName>

        </xsig:KeyInfo>

        <xenc:CipherData>

          <xenc:CipherValue>...</CipherValue>

        </xenc:CipherData>

      </xenc:EncryptedData>

    ...

    </x:Order>

    ...

  </SOAP:Body>

</SOAP:Envelope>

当然,在这个例子中,你可以用数字签名来签署该报文,来防止怀有恶意的人来窜改数据,或者用时间戳或者其他唯一的标识来判断信息是否受到攻击.

加密的种类

对称加密和不对成加密

加密得算法可以分为对称加密和不对称加密.在对称加密算法中,一个密钥被用来进行信息交换得两方共享.发送方利用私钥得拷贝来加密数据.在接收方,利用同样得私钥的拷贝来解密数据.绝大多数得加密,如基于共享密码和共享安全标识都是对成加密得例子.

在这种类型的系统中,一个中心的服务器分发共享的密钥给需要安全交互的使用者.对称加密的缺点是共享密钥的管理,分发和保护它们的安全性,特别是在象internet这样的公网上.

为了克服在公共网络中管理密钥的的难度,使用成对的密钥来取代单一的密钥.在不对成加密算法中,双方都互相拥有一个私钥和一个密钥.

公钥是利用一种不可逆的方法对私钥进行操作后产生的,因此一旦两者中的一种用来加密数据,另外一种就可以用来解密.另外,不可由公钥来推测出私钥,而且只有用私钥来解密用公钥加密的数据.当发送异步加密的报文时,发送者利用接收者的公钥加密报文,确保只有接收者可以利用他的私钥来解密报文.如果你用另外一种方式来处理,任何人都可利用可利用的公钥来解密报文.不对称加密是PKI的基础,pkix.509安全标准的基础.不对成加密算法是一种典型基于对大数处理的算法,如指数合对数运算.它比对成加密算法需要更多的cpu时间来进行加密和解密.,因为这个原因,不对称加密经常用来安全的传送一个对称的会话密钥,用来加密交互的剩余部分,这也只是在信息交换的持续周期内有效.

因为公钥可以很容易的获得,使用公钥进行加密减轻了分发和管理密钥的难度.不幸的是,这种方便性的代价是不对成加密算法通常比对成加密算法慢几个数量级.由于此,不对称加密方法只用来处理比较小的数据.例如安全密钥和标识以及数字签名.

WebService soap报文请求与响应报文解析

需求         今日公司要做一个协同办公系统(OA),PC端已经完成。现在要做一个手机端网页端的。从登陆入手,需要向 服务端发送一段请求报文获取响应报文,对响应报文进行解析判断是否登录成功。 ...
  • qq_24505127
  • qq_24505127
  • 2016年11月06日 23:07
  • 20278

soap报文格式

首先1 Boot报文是客户端设备每次重启的时候向服务器发送的请求,基本的发报流程是这样的: 1. 客户端向服务器发送1 Boot Inform请求。 2. 服务器接收到以后会向...
  • qq_34294677
  • qq_34294677
  • 2016年03月15日 10:00
  • 1570

自定义身份验证Soap头 进行加密解密

自定义身份验证Soap头 进行加密解密     在上篇文章中我们了解了使用自定义SOAP头进行身份验证,使webService服务的身份验证变得灵活,简便。 但是是以明文的方式在网上传输,不能...
  • ycl295644
  • ycl295644
  • 2015年09月29日 10:52
  • 1290

用Java来输出soap报文

前段时间开发acs,是基于soap协议的通信,一次通信过程包含多个soap报文,而且也不想普通的webserivice那样, soap报文是自动生成的。acs的通信的报文是硬编码编出来的,虽然能正确运...
  • suleil1
  • suleil1
  • 2015年10月28日 17:01
  • 3185

soap报文略说

简单说一下soap报文,有两种版本的报文的报头。 SOAP_1_1_PROTOCOL与SOAP_1_2_PROTOCOL 分别对应的是1.1: 1.2: ...
  • shaguatao
  • shaguatao
  • 2016年09月23日 14:36
  • 1048

Axis2用法(3)soap消息携带消息头

1、消息头定义 一般soap消息中,消息体是携带消息的核心内容;消息头中的字段,多数用于校验。定义消息头,就相当于定义一个bean对象。本例中,在上一篇的继承上,为消息增加消息头,其中消息头核心内容...
  • yanghaitaohhh
  • yanghaitaohhh
  • 2013年12月31日 23:06
  • 8256

代码_AXIS:调用webservice接口发送soap报文

一、拼接报文的方式:     (1)利用StringBuffer来拼接字符串,代码如下: StringBuffer soapData = new StringBu...
  • dashengguilai_00
  • dashengguilai_00
  • 2017年09月19日 09:37
  • 243

soap发送报文请求和dom4j解析XML并且获得指定名称的节点信息

package com.lzw.b2b.soap; import java.io.ByteArrayInputStream; import java.io.InputStream; import j...
  • lzwjavaphp
  • lzwjavaphp
  • 2016年01月12日 14:01
  • 8019

CXF打印SOAP报文,记录WebService日志

CXF是Apache发布的一个用于快速构建Services的框架,用于构建WebService客户端及服务端。 使用cxf构建的java程序,在java层面看到的是很多层的java类对象,但是在实际的...
  • avwjq
  • avwjq
  • 2017年11月06日 17:59
  • 407

java使用soap方式简单实现webservice (二)

上一篇从 xml 中找对应的参数比较麻烦,这里介绍用 SOAPUI 的方式填写参数 这里为实际调用 .net的 短信发送服务测试import java.net.URL; import javax...
  • nohero1
  • nohero1
  • 2015年10月13日 10:53
  • 10952
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用WSE 加密SOAP报文(2)
举报原因:
原因补充:

(最多只允许输入30个字)