利用WSE 加密SOAP报文(1)

** 摘要 ** :

如何使用支持 WS 安全规范的 WSE(Microsoft Web Services Enhancements) 使加密 SOAP 能够跨越标准 HTTP 呢?讲述了 SOAP 报文加密是如何进行,在 WS 安全和 XML 加密规范中又是如何定义的。

** 目录 ** ** : **

l 介绍 WSE

l WSE 的安全特性

l 加密 SOAP 报文

l WSE 对加密的支持

l 配置 WSE

l SOAP 报文的对称加密算法

l 使用 X.509 证书来加密 SOAP 报文

l 选择报文的节点 ( 组成部分 ) 来加密

l 局限性和协作性细节

l 结论

** WSE ** ** 介绍 ** ** **

为了使 Web 服务在企业内部运行得更好 , 新一代的 Web 服务规范被提出来 . 建议应该改善对 Web 服务很重要的方面如 安全 , 可靠报文 , 发送附件对地区间的协调性 . 为了支持这些提议的标准 ,ms 发布了 WSE1.0 sp1, 它包含了一系列的类来支持这些新的协议 , 如基于 Microsoft 的 asp.net 宿主的过滤器 , 拦截进入和发出的 SOAP 报文 , 拦截或者产生 SOAP 头来支持需求的功能 .WSE 支持以下的规范 :

l WS- 安全和 Web 服务安全补遗

l WS 附件

l WS 路由

l WS 引用

** WSE ** ** 的安全特性 ** ** **

在 WSE 运行时 , 由一系列过滤器产生和读取 WS-security 兼容的 SOAP 报头 . 当在一台支持 WSE 的 Web 服务器上接收到 SOAP 报文时 ,SOAP 报文经过一系列输入过滤器读取 WS-* 兼容的报头 , 如有必要修改它们 , 产生一系列相关程序对象 . 同样 , 输出的报文是经过一些列输出过滤器 , 序列化一定的报头如 WSE 对象定义的 . 所有被 WSE1.0 sp1 所支持的 Web 服务安全特征由安全输入和输出过滤器通过 SecurityInputFilter 和 SecurityOutputFilte 对象来实现 . 它包含 : 数字签名 , 加密 , 签署和加密用户标识 , 签署和加密用 x.509 证书 , 签署和加密用自定义 2 进制标识 .

** 加密 ** ** SOAP ** ** 报文 ** ** **

用统一的格式来传输数据 , 使得有价值的数据容易被恶意用户访问 , 以至被拦截 . 使用 SOAP 和 xml 来传输数据不但数据有潜在的安全威胁 , 而且你 Web 服务的内在工作方式有可能被发现 , 通过观察 SOAP 报文本身带的 xml 语法 . 使用合适的加密算法 , 数据和信息接口可以得到完全的保护 . 加密是简单的使用一种可逆的算法使用特定的密钥对明文进行加密 , 使得数据如果不解密则无法阅读 . 如今,互联网加密的最常见的形式引入了一种传输级的加密模式,例如IPSEC和SSL,在传输层加密 .有了一定的安全性,但是传输层加密影响性能,尤其是当只有SOAP报文的一部分需要加密时.而且传输层加密不允许报文安全的路由通过Web 服务作为中介.因为报文需要解密由媒介在她能以新的加密的流传送到最终接收者之前,

** Xml ** ** 加密是如何工作的 ** ** **

Xml 加密协议指定了 SOAP 报文的部分或者全部可以被加密 . 当使用 xml 加密时 , 将针对 xml 文档的部分进行加密 , 加密后的内容在 EncryptedData 节点内部 .WS 安全是基于 xml 加密的 , 充分保证了使用 xml 加密来加密 SOAP 报文时 , EncryptedData 是 security 头部节点元素的引用 . 如果在 SOAP 报文的主体中有多个节点被加密时 , 每个节点参考自每个独立的且在 ReferenceList 中的 ReferenceData 节点

对于一个 EncryptedData 节点 , 一些密钥的信息可以在 KeyInfo 节点指定 , 加密的算法则在 EncryptionMethod 节点中指定 ,keyinfo 节点按照 xml 签名规范来定义的 .

Published At
Categories with Web编程
Tagged with
comments powered by Disqus