Java Web Services:不使用客户端证书的WS-Security - 编程入门网
Java Web Services:不使用客户端证书的WS-Security时间:2010-10-26 IBM Dennis Sosnoski许多 WS-Security 配置要求客户端和服务器都使用 public/private 密钥对,使用 X.509 证书保证公共密钥的身份。这是使用 WS-Security 进行消息签名或加密中最广泛使用的技术,而且它有一些优势。特别地,客户端证书对请求提供了较严格的客户端身份验证和较严格的签名保证。但是它也有缺点,包括不对称加密的性能开销和每个客户端获取和维护证书的繁琐管理。 “WS-SecureConversation 性能” 介绍 WS-SecureConversation — 虽然仍然使用客户端证书 — 是如何使用对称加密来减少客户端和服务器之间持续交换消息的性能开销。在本文中,您将会了解您可以如何更一步地打破在普通的 WS-Security 和 WS-SecureConversation 交换方面都需要客户端证书的现状。 不需要客户端证书的加密和签名 使用不对称加密和 public/private 密钥对进行消息的签名和加密是很简单的(至少概念上很简单)。正如在 “Axis2 WS-Security 签名和加密” 中所介绍的,您可以使用您的私钥对消息进行签名,并使用接收者的公钥对消息进行加密。任何得到您的公钥(一般以 X.509 证书的形式封装在多层认证中)的人都可以验证您使用私钥生成的签名,但是只有对应私钥的拥有者才能够解密使用公钥加密的消息。 如果客户端没有 public/private 密钥对,您就无法使用完整的不对称加密技术。另外一种方法是对称加密,但是使用对称加密时,您必须拥有只有参与消息交换各方才知道的密钥。您可以如何创建这样一个保密密钥呢? WS-Security 所使用的技术是要使客户端生成一个保密密钥值,然后再使用不对称加密和服务器公钥对它进行加密,并将它嵌入到一个 <xenc:EncryptedKey> 令牌的请求消息中。客户端可以使用这个保密密钥(或者更安全的做法是使用由保密密钥生成的单独密钥)来对请求消息进行加密和/或签名,而服务器也可以对响应消息做相同的操作。服务器不需要将保密密钥发送回客户端,因为客户端已经拥有了这个保密密钥。 WS-SecurityPolicy 配置 使用客户端生成密钥的对称加密的 WS-Policy/WS-SecurityPolicy 配置是很简单的。清单 1 显示的是本文所使用的版本。这个策略使用客户端生成的保密密钥来规定发送到两个方向的消息体加密方式。 清单 1. 用于加密所有消息体的 WS-Policy
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |