`
午夜阳光
  • 浏览: 51091 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

组合安全策略

阅读更多

16.7.5  组合安全策略
以上三小节所介绍的都基于单一安全策略机制,此外只在客户端应用了安全策略。有 时我们可能需要在Web Service的服务端和客户端同时使用安全策略,不但保证客户端请求SOAP报文的安全性,同时也保证服务端响应SOAP报文的安全性。每一方都可以采 用多种组合的安全策略,如使用“数字签名+报文加密”或“身份认证+报文加密”等组合方式。
从请求和服务的角度上看,Web Service的交互两端分为客户端和服务端,但在实施安全策略时两者是对等的。即如果客户端的请求SOAP希望使用WS-Security,客户端需要 注册并配置OutHandler,服务端则相应地注册并配置InHandler。相应的,如果服务端的响应SOAP希望使用WS-Security,服务 端需要注册并配置OutHandler,而客户端需要注册并配置InHandler。我们完全可以在前三小节的基础上完成所有组合的安全策略,本节将给出 几个应用的例子。
客户端请求SOAP使用“数字签名+报文加密”组合方式
服务端需要完成两件事:首先,对SOAP请求报文进行解密,接着验证数字签名的合法性,这些信息都通过WSS4JInHandler的properties属性进行设置:

值得注意的是②处组合动作的设置,多个动作用空格分隔。在XFire中,动作的执行顺序和动作的编写 顺序一致,如“Encrypt Signature”表示先解密再验证数字签名(对于InHandler)。properties需要通过设置分别为多个动作提供相应的配置信息。
客户端完成两个动作:先对报文进行加密,再进行数字签名。这些信息通过设置WSS4JOutHandler的properties属性达到目的:

①-1处的组合动作设置和服务端的一样使用空格分隔多个动作,特别要小心的是,客户端组合动作的顺序必须和服务端相同,否则将引起错误。
客户端同时使用加密和签名的安全策略后,就可以保证请求SOAP报文的保密性、完整性和不可抵赖性,解决信息安全领域三个最关键的问题。
请求和响应SOAP都进行加密
服务端在接收客户端请求SOAP报文时,需要使用server私钥进行解密处理,在发送响应SOAP报文时需要使用client的数字证书进行加密处理。

与先前我们配置的Web Service最大的区别在于我们用粗体部分的代码定义了OutHandler,它们将对响应的SOAP报文使用client的数字证书进行加密处理。 outsecurity_enc.properties属性文件定义了访问serverStore.jks的访问信息。
一般的系统并非两点交互的 系统,它们大多拥有多个客户端。由于服务端需要使用对应客户端的数字证书对响应SOAP报文进行加密,所以在实际应用中,不适合在Spring配置文件中 定义响应SOAP报文的加密信息——因为数字证书必须是动态设置的,需要发送给哪个客户端就使用哪个客户端的数字证书。我们特别让服务端采用Spring 配置方式,而客户端采用编码的方式,只是为了说明两种方式的具体使用方法,读者需要根据实际应用进行灵活的选择。
由于请求SOAP和响应SOAP都进行了加密,所以客户端需要采用和服务端相似的设置方式,注册InHandler对响应SOAP报文进行解密,注册OutHandler对请求SOAP报文进行加密:

关于属性文件的具体信息,请参看随书光盘的内容,我们不再展开说明。按照相似的方式,我们还可以让客户端与服务端都采用“数字签名+报文加密”的方式,实现双向的安全。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics