在前一篇文章:Axis2+Rampart(WSS4J)实现UsernameToken认证方式的WS-Security(基于SOAP的Web安全调用机制)
http://blog.csdn.net/wwwgeyang777/article/details/19928631
介绍了Axis2+Rampart(WSS4J)实现UsernameToken认证方式的WS-Security,感觉能满足大部分应用的安全需求了,就是相对比较繁琐,而且关于传输消息的封装等都在黑盒中完成了,被框架完全绑架了,实在是不可控。
那有没有简单点的又完全是由开发者控制的安全验证方式呢?答案是:Of course!
先理解下WSS4J的工作方式:WSS4J在Web Services框架中以handler方式工作,在发送SOAP消息前进行签名、加入认证凭据和加密,在收到SOAP消息后进行解密、认证和验证签名等安全工作。使用者可以自己编写handler处理SOAP消息以保证安全。
在我看来,WSS4J的方式说白了,就是在SOAP请求的Header中添加验证信息,然后服务端在相应的服务中解析Header,再进行校验,这就是最简单的原理。
既然原理清楚了,下面就来实践吧。
服务端
服务端就要在每个方法里面加上解析SOAP Header,并进行安全校验的代码即可,记住,是每一个方法里面都加,是everyone