1 回答
TA贡献1818条经验 获得超7个赞
您正在尝试将安全性强加到您的请求中,而有一个拦截器和默认方式来做到这一点。配置Wss4jSecurityInterceptor你的WebServiceTemplate。
像下面这样的东西应该可以解决问题。
@Bean
public Wss4jSecurityInterceptor securityInterceptor() {
Wss4jSecurityInterceptor interceptor = new Wss4jSecurityInterceptor();
interceptor.setSecurementUsername("username");
interceptor.setSecurementPassword("password");
interceptor.setSecurementUsernameTokenNonce(true);
interceptor.setSecurementActions("UsernameToken Timestamp");
return interceptor;
}
然后将其注入您的WebServiceTemplate. 这应该添加所需的标题,而您无需执行任何其他操作。理想情况下,您会配置WebServiceTemplate一次并重复使用它。
@Bean
public WebServiceTemplate webServiceTemplate(Marshaller marshaller) {
WebServiceTemplate wsTemplate = new WebServiceTemplate(marshaller);
wsTemplate.setInterceptors(new ClientInterceptor[]{ securityInterceptor() });
return wsTemplate;
}
然后使用WebServiceTemplate代码中的预配置。
添加回答
举报