SOAP消息级安全框架对比

来源:百度文库 编辑:神马文学网 时间:2024/04/30 04:02:34

整个安全模型系统的处理流程如下:Web服务的安全研究与模型实现)

(1)服务请求者和服务提供者各自向XKMS 服务器注册认证书.

(2)服务请求者登录SAML 认证服务器,验证后,从数据库或权限列表取出与登录者身份相应的访问权限,生成SAML 断言.

(3)将SOAP 请求消息经安全处理后发出.

(4)服务提供者收到SOAP 请求消息后,做相应的安全处理,根据处理结果判断是否满足服务请求者的请求.

下面详细分析SOAP 消息安全处理的相关问题.SOAP 消息安全处理包括对SOAP 消息的签名、加密和添加SAML 断言.

服务请求者对SOAP 消息的安全处理过程如下

(1)服务请求者从XKMS 服务器取得服务提供者的认证书.

(2)服务请求者将生成的SAML 断言加入SOAP消息中.

(3)服务请求者用自己的认证书中的私钥对SOAP 消息签名.

(4)用服务提供者认证书中的公钥对SOAP 消息加密,利用XML 加密的部分加密特性,仅加密SOAP 消息的机密信息,而不加密SOAP 消息的Header 部分.

(5)将服务请求者的认证书加入SOAP 消息,发送给服务提供者.

服务提供者对SOAP 消息的安全处理过程如下:

(1)服务提供者接收到消息后,定位消息中的认证书,向XKMS 确定该证书的有效性.

(2)取出其中的公钥验证签名.

(3)服务提供者利用自己的认证书中的私钥解密.

(4)根据SAML 断言中的权限信息决定服务请求者是否有权限访问请求资源.若有权访问,则满足服务请求者的请求,并发送SOAP 响应消息;否则拒绝服务请求者的请求.

服务提供者响应服务请求者的过程与SOAP请求过程类似,不再赘述.

 

(Web服务安全技术的研究与实现)

 

 

(基于Web服务的安全模型研究)

消息安全模型中有四个角色:服务请求者、服务提供者、SAML 管理机构及XKMS 服务器。服务请求者是申请提供服务方,可以是一个基于浏览器的应用程序、组件甚至是一个Web服务。服务提供者是服务所有者,它经过认证,授权向合格的请求者提供资源SAML 管理机构是权限管理机构,它处理系统的访问控制和授权,用来生成SAML 断言,其中包含了用户验证证件和其他授权信息。SAML 管理机构有时就是Web 服务提供者,它可以位于Internet 的任何位置上。XKMS 服务器为Web 服务提供基于XML 的公用密钥基础结构。主要用来管理密钥和证书信息。控制密钥注册、恢复与取消。服务请求者和服务提供者都可以通过XKMS 服务来认证对方,可以说XKMS 服务器也提供了一种Web 服务。

消息安全模型具有三个操作:取得SAML 断言、取得认证信息、对传输的SOAP[4]消息进行安全处理。其核心是消息的安全处理,它包括对SOAP 消息加密、数字签名和添加SAML 断言,其它两个操作是为该操作服务。消息安全模型中用到的SAML、XKMS 以及SOAP 加密等都是基于XML 的,都具有互操作性,可以跨平台,同时能满足Web 服务的安全需求。

整个安全模型系统的处理流程如下:

1) 服务请求者和服务提供者各自向XKMS 服务器注册认证证书。

2) 服务请求者登录SAML 认证服务器,验证后,从数据库或权限列表取出与登录者身份相应的访问权限,生成SAML 断言。

3) 将SOAP 请求消息经安全处理后发出。

4) 服务提供者收到SOAP 请求消息后,做相应的安全处理,根据处理结果判断是否满足服务请求者的请求。下面详细分析SOAP 消息安全处理的相关问题。SOAP 消息安全处理包括对SOAP 消息的签名、加密和添加SAML 断言。

服务请求者对SOAP 消息的安全处理过程如下:

1) 服务请求者从XKMS 服务器取得服务提供者的认证证书。

2) 服务请求者将生成的SAML 断言加入SOAP 消息中。

3) 服务请求者用自己的认证证书中的私钥对SOAP 消息签名。

4) 用服务提供者认证证书中的公钥对SOAP 消息加密,利用XML 加密的部分加密特性,仅加密SOAP 消息的机密信息,而不加密SOAP 消息的Header 部分。

5) 将服务请求者的认证证书加入SOAP 消息,发送给服务提供者。

服务提供者对SOAP 消息的安全处理过程如下:

1) 服务提供者接收到消息后,定位消息中的认证证书,向XKMS 确定该证书的有效性。

2) 取出其中的公钥验证签名。

3) 服务提供者利用自己的认证证书中的私钥解密。

4) 根据SAML 断言中的权限信息决定服务请求者是否有权限访问请求资源。若有权访问,则满足服务请求者的请求,并发送SOAP 响应消息;否则拒绝服务请求者的请求。

服务提供者响应服务请求者的过程与SOAP 请求过程类似,不再赘述。

 

(基于SOAP的Web服务安全通信机制的研究与实现)

(基于XKMS和SAML的Web服务安全模型)

安全模型包含了4 个主要角色:服务请求者(客户端)、服务提供者(服务器端)、断言服务器和XKMS 服务器。

XKMS 服务器提供密钥注册、定位、验证等服务,用于处理和管理基于PKI的加密签名密钥;通过这些服务,向服务请求者和服务提供者屏蔽了使用PKI 的复杂性,保证请求者和提供者之间相互认证,建立彼此的信任关系。客户端(Client)与服务提供者(Service通过经安全处理的SOAP 消息进行通信。为实现客户端跨域访问,本模型引入一个第三方信任服务——断言服务器。客户端在访问Web服务之前向断言服务器发出一个RST(Request Security Token),这是主要指SAML Token,主要进行身份、属性验证和授权。断言服务器收到RST,首先生成该用户的认证信息和相关属性,然后产生一个Client与Service之间安全的共享对称密钥,利用这个密钥证明Client是SAML Token的拥有者,从而建立Client与Service之间的一种信任关系。为了让该密钥只被Service和Client接收到,我们使用Service和Client的公钥分别对其加密,并加入到SAML Token中。最后由断言服务器使用自己的私钥对以上内容加以签名,保证该Token确实是由断言服务器签发的,并保证它不会被篡改。Client根据请求的Web服务创建出相应的SOAP安全工具包,然后将从断言服务器中获得的SAML Token原封不动地添加到SOAP安全工具包的Head中,并将带有Token的SOAP发往Service。服务提供者对SOAP工具包作安全处理后,为合法的请求提供服务资源和访问控制。

⑴ SOAP安全工具包的客户端功能

Client 将断言服务器对用户做出的SAML断言(包括身份验证、属性、授权断言)加入SOAP 头中作为用户安全令牌,并在SOAP 头中加入安全属性,包括时间戳、序列号、发送者、接收者四项缺省安全属性,可进行扩展,添加其他安全属性。Client 可利用自己的私钥解密SAML Token中的会话密钥,并利用此会话密钥对请求消息加密;利用私钥对SAML 令牌、安全属性和需要保证完整性的元素进行签名处理;最后Client 将经过安全处理的SOAP安全信息包发给服务提供者。

⑵ SOAP安全工具包的服务器端功能

服务器收到安全消息以后,首先检查安全属性,判断是否重放,是否为相应的接收者和发送者等。然后服务器端用自己的私钥从SAML Token 中解密会话密钥,用会话密钥解密请求消息,根据请求消息中客户端传递的密钥信息,利用XKMS 信任服务实现的定位服务,获取客户端的公钥,进而验证签名的有效性。随后Service 从Client 的请求消息的Head 中取出SAML Token 进行处理。其具体步骤是:先判断该Token 是否在有效期内;其次验证该Token 的签名,判断该Token 是否由自己所信任的断言服务器签发;然后根据Token 中的主体验证方法判断Token 所断言的主体是否就是消息的发送方(此处采用的是Hold-of-Key 的方法);最后根据断言调用相应的资源和进行授权,并对响应消息加密、签名,附加时间戳,发送给客户端。

 

图3 客户端生成安全SOAP请求流程图

(一种Web服务安全体系结构模型的研究)

图4 服务端安全模型

(一种Web服务安全体系结构模型的研究)

首先由服务器为自身及客户端生成用于数字签名的非对称密钥和数字证书, 分别存储在客户端和服务器上。客户端与服务器正式通讯前需要得到服务器端非对称加密密钥的公钥。客户端首先根据用户、密码和客户端生成的客户端加密用公钥等信息生成原始的SOAP消息, 并用自己的私钥对SOAP消息进行签名。

然后, 客户端用生成的对称密钥加密SOAP消息正文, 用得到的服务器端加密用公钥加密对称密钥, 然后把加密后的SOAP消息连同加密后的对称密钥一起传输到服务端。流程如图3所示。

如图4所示,服务器端首先从XKMS( XML Key Management Specification)中提取出自身私钥以及从证书库中提取客户端数字证书, 用服务器端私钥对SOAP消息正文解密, 从SOAP 消息中提取出用户名称和密码, 服务器利用附在消息中的客户端签名公钥以及从证书文件中提取出的客户端数字证书来验证签名。这样可保证SOAP 消息的机密性和完整性。然后从SOAP消息中提取X. 509数字证书, 从证书库里查询对应的X. 509证书, 比较两个证书, 如果相等那么客户端就能通过身份验证。用户通过授权和访问控制接口, 被分配到相应的权限后, 就可以访问W eb服务以及资源了。目标Web服务端处理后返回的SOAP 消息同样使用服务器端的数字证书进行数字签名, 用生成的对称密钥对SOAP消息正文进行加密后, 再用得到的客户端加密用公钥加密对称密钥, 然后把加密后的SOAP 消息连同加密后的对称密钥一起再传输回客户端。到客户端后, 客户端对服务器返回的SOAP消息进行数字认证、解密。

 

(基于属性的Web服务安全访问控制方案)

(基于属性的Web服务安全访问控制方案)