我已经开始用Spring学习Apache CXF了.首先,我创建了一个简单的客户端/服务器模型:see here
现在我正在尝试使用简单的证书身份验证.这样我就改变了配置文件(对于服务器和客户端):
CXF-servlet.xml中:
spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
.soap.saaj.saajInInterceptor"/>
ecurity.wss4j.WSS4JInInterceptor">
server_sign.properties:
org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.merlin
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=keyStorePassword
org.apache.ws.security.crypto.merlin.file=publicstore.jks
CXF的客户端 – servlet.xml中:
spring-beans-2.0.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schema/jaxws.xsd">
factorybean">
.soap.saaj.saajOutInterceptor"/>
ecurity.wss4j.WSS4JOutInterceptor">
ws-client" />
客户工作得很好.它使用它的PasswordCallbackHandler.问题是服务器似乎没有使用它的PasswordCallbackHandler.我在调试模式下运行服务器,但它没有进入这个类.请问任何人解释一下,我做错了什么?
提前致谢.
进展:
>如果您尝试提供来自用户的请求,哪个证书不在服务器的密钥库中,则会引发错误(“未找到用于签名的用户ws-client1的证书”)
>从the resource开始:“正如您在上面的jbossws-cxf.xml文件中所看到的,还配置了密钥库密码回调处理程序;虽然属性文件具有密钥库的密码,但此回调处理程序用于为每个密钥设置密码(它必须匹配在商店中导入每个密钥时使用的那个).“
最佳答案
好吧,经过对wss4j源代码的一些研究,我已经意识到,在签名操作(仅)的情况下,WSS4JInInterceptor中没有回调处理程序.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。