浏览 4129 次
锁定老帖子 主题:java Web Service的安全
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-27
最后修改:2009-10-16
搞了几天cxf的web service security后发现它有一个bug,不能同时传username token和进行证书加密。不爽。原因是只有一个userName可以设置。 记得当时很郁闷。而且还有一个让我不爽的事情。在公司轻松配出签名,username token,但是死活配不出sig+encryption。一会是jar包不对,我得下个jar包override jdk的jar包。一会是加密算法不支持。我又下policy jar和改配置,下第三方provider包去作为加密的实际执行。折腾了一天都没有搞定。最最郁闷的事情是回家一配,简直是一配就好。不用override jaxb包,不用改policy文件。而且我清楚的记得公司的jre是1.6和家里一样。 鉴于碰到的问题,又看了看其他的方案。Spring ws说是提倡wsdl first,我又不是集成遗留系统,所以不予采纳。axis说是一样用wss4j,我都怕了,也没有细看。 我想封装的东西还是不保险。不如直接看底层吧。于是看xwss和jax ws,wsit。xwss的文档明显看着比cxf好多了,handler的作用也是清清楚楚,不像cxf有些语义不清。最后的方案定下来是jax ws加xwss搞定。 做的过程真是可以用一句峰回路转来形容。碰到一个问题,解决一个,马上又是一个新问题。基本上都快崩溃了。我的想法是用standalone的code直接做安全。但是大多数的教程都是部署在server里的。而且基本没有什么好的文档讲怎么手工用code实现安全和一些内部机理。 比如说我现在还是不知道自定义的handler什么时候执行。这点就不如cxf了,至少cxf的phase清清楚楚的说明了handler的顺序。[这个最近有了新的认识,protocol handler and logic handler] 然后就是那个经典的mustunderstood=1的问题。搞了好久,还是不明白为什么。基本上网上的方案都试了。 最后灵光一现,决定jar要尽可能从同一个产品中引用。于是下了一个jwsdp,然后所有的包都是引用里面的。不过有一个例外。还用了一个sun jdk的jar包。最后的最后,终于通了。 这次实践的总结: 1 一定要在对所有流行的解决方案有个熟悉的时候,在深入看一两个。 2 不在迷信open source的易用性。封装未必会简化开发。 3 java世界里jar还是比较乱的。尽可能用同一个product的lib下的jar包。这个太变态了,经常一个名字有n多重名实现。不知道大家平时开发时怎么解决这个问题。 4 不论用不用底层的技术,还是应该先看看底层的技术,因为上层的封装都是依赖于底层的,而且很多思想也是来源于底层。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-09-13
可以分享一下阁下关于xwss的源码吗,看了半天没搞懂
|
|
返回顶楼 | |
发表时间:2009-10-13
ztkx 写道 可以分享一下阁下关于xwss的源码吗,看了半天没搞懂 近期我会放上去。 |
|
返回顶楼 | |