Java Web Services:不操纵客户端证书的WS-Security[Java编程]
本文“Java Web Services:不操纵客户端证书的WS-Security[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
很多 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
<wsp:Policy wsu:Id="SymmEncr"
xmlns:wsu="http://.../oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:X509Token sp:IncludeToken=".../IncludeToken/Never">
<wsp:Policy>
<sp:RequireDerivedKeys/>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic128Rsa15/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
</wsp:Policy>
</sp:Wss11>
<sp:EncryptedParts>
<sp:Body/>
</sp:EncryptedParts>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
清单 1 战略中的 <sp:SymmetricBinding> 断言是配置利用带有保密密钥的对称加密的代码.所嵌入的 <sp:X509Token> 断言表示有一个 X.509 证书将用于保护保密密钥的传输(即,加密所传输的保密密钥),而这是利用指纹引用(本质上是一个散列值)辨认的证书.客户端生成的保密密钥是隐式利用带有 <sp:X509Token> 保护令牌的 <sp:SymmetricBinding> 断言.其他战略断言则规定了加密算法的细节和必要的特点,而终究 <sp:EncryptedParts> 断言表示将要利用保密密钥举行加密的 SOAP Body.
正如您在之前的文章中看到的,安全性处理的运行时参数(如密钥保存和密码)必须采取与实现无关的方法举行定义.在这里,这些参数是很简单的:客户端需求拜候包含服务器证书的可托存储,而服务器端则需求拜候包含证书中与公钥相匹配的私有密钥的密钥存储.请阅读这个 系列文章 理解参数在各个协议之间是若何传送的.
以上是“Java Web Services:不操纵客户端证书的WS-Security[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |