最近项目需要用到webService的调用,之前也没研究过相关的配置,就网上找了下资料,采用maven+spring + cxf+wss4j配置测试webservice用。
首先创建的项目配置cxf的pom.xml的相关包的引入,代码如下:
org.apache.cxf
cxf-rt-frontend-jaxws
3.1.7
org.apache.cxf
cxf-rt-transports-http
3.1.7
org.apache.cxf
cxf-rt-ws-security
3.1.7
参考:
http://blog.csdn.net/jquerys/article/details/50634576
http://blog.csdn.net/rangqiwei/article/details/19282271
加入权限验证时,开发的服务端回调类注意的地方
调试遇到的问题:
WSPasswordCallback 的passwordType属性和password 属性都为null,你只能获得用户名(identifier),一般这里的逻辑是使用这个用户名到数据库中查询其密码,然后再设置到password 属性,WSS4J 会自动比较客户端传来的值和你设置的这个值。
你可能会问为什么这里CXF 不把客户端提交的密码传入让我们在ServerPasswordCallbackHandler 中比较呢?
这是因为客户端提交过来的密码在SOAP 消息中已经被加密为MD5 的字符串,如果我们要在回调方法中作比较,
那么第一步要做的就是把服务端准备好的密码加密为MD5 字符串,由于MD5 算法参数不同结果也会有差别,另外,这样的工作CXF 替我们完成不是更简单?