了解下JAVA的Java Web Services:不利用客户端证书的WS-Security
net网页编程程序员的大部门代码都靠控件拖拽完成的,虽然java也有,但是无论从美观和速度上都没发和.net网页编程比。java程序员都是代码完成的,所以java程序员常戏称.net网页编程程序员是操作员,呵呵。很多WS-Security设置请求客户端和服务器都利用public/private密钥对,利用X.509证书包管大众密钥的身份。这是利用WS-Security举行动静署名或加密中最普遍利用的手艺,并且它有一些上风。出格地,客户端证书对哀求供应了较严厉的客户端身份考证和较严厉的署名包管。可是它也出缺点,包含不合错误称加密的功能开支和每一个客户端猎取和保护证书的烦琐办理。
“WS-SecureConversation功能”先容WS-SecureConversation—固然仍旧利用客户端证书—是怎样利用对称加密来削减客户端和服务器之间延续互换动静的功能开支。在本文中,您将会懂得您能够怎样更一步地冲破在一般的WS-Security和WS-SecureConversation互换方面都必要客户端证书的近况。
不必要客户端证书的加密和署名
利用不合错误称加密和public/private密钥对举行动静的署名和加密是很复杂的(最少观点上很复杂)。正如在“Axis2WS-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>断言暗示将要利用保密密钥举行加密的SOAPBody。
正如您在之前的文章中看到的,平安性处置的运转时参数(如密钥保留和暗码)必需接纳与完成有关的体例举行界说。在这里,这些参数是很复杂的:客户端必要会见包括服务器证书的可托存储,而服务器端则必要会见包括证书中与公钥相婚配的公有密钥的密钥存储。请浏览这个系列文章懂得参数在各个协定之间是怎样传送的。
<p>
但是我同意你的观点,对于大型项目来说,应该是采用框架的一部分,根据功能的不同而改进,欢迎你能再提出些宝贵意见,我会多多学习的。说到jbuilder,我可能是个人感觉,用的时候确实没有vs爽,我最喜欢的IDE是net网页编程beans,谢谢。 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 是一种使用者不需花费很多时间学习的语言 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 是一种为 Internet发展的计算机语言 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
页:
[1]