cxf ws-security 加密和签名问题???
存在问题:服务器端的WSS4J拦截器不执行,其它运行正常!配置代码如下:
一.客户端:
1.applicationContext-client.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<bean id="wss4jOutInterceptor" class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
<constructor-arg type="java.util.Map">
<map>
<entry key="action" value="Signature" />
<entry key="user" value="apmclient" />
<entry key="passwordCallbackClass"
value="client.ClientPasswordCallback" />
<entry key="signaturePropFile" value="client_sign.properties"></entry>
</map>
</constructor-arg>
</bean>
<jaxws:client id="service"
address="http://localhost:8080/SIPService1/service/AlgorithmService" serviceClass="service.IAlgorithmService">
<jaxws:outInterceptors>
<ref bean="wss4jOutInterceptor" />
</jaxws:outInterceptors>
</jaxws:client>
</beans>
2.client_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=keystorePass
#org.apache.ws.security.crypto.merlin.alias.password=apmclientpass
org.apache.ws.security.crypto.merlin.keystore.alias=apmclient
org.apache.ws.security.crypto.merlin.file=clientStore.jks
3.客户端的拦截类(正常执行)
public class ClientPasswordCallback implements CallbackHandler {
public void handle(Callback[] callbacks) throws
IOException,
UnsupportedCallbackException {
for (int i = 0; i < callbacks.length; i++) {
WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
pc.setPassword("apmclientpass");
pc.setIdentifier("admin");
System.out.println("-----------client---------------"+pc.getIdentifier());
}
}
}
4.调用代码
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "client/applicationContext-client.xml" });
IAlgorithmService service = (IAlgorithmService) context
.getBean("service");
InputInfo inputInfo = new InputInfo();
inputInfo.setSentenceA("我住在北京");
OutputInfo oi = service.getAnalyticStructure(inputInfo);
System.out.println("-----------" + oi.getSubject());
System.out.println("-----------" + oi.getPredicate());
System.out.println("-----------" + oi.getObject());
System.out.println("-----------" + oi.getSubjectAttribute());
System.out.println("-----------" + oi.getObjectAttribute());
System.out.println("-----------" + oi.getA