我当前正在使用WSDLs文件,在我的项目中,我使用带有DefaultWsdl11Definition的Spring WS从XSD生成WSDL。关键是该标头为空,我想使用已创建的安全标签生成一个标头。
我想生成带有这种标题的WSDL文件:
<soapenv:Header>
<wsse:Security soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>?</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">?</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
我今天拥有的WSDL生成一个空的标头。我想知道是否有可能创建一个WSDL来生成带有已填充安全标签的标头。
最佳答案
是的-您可以通过在配置类中定义以下内容,将Apache的Wss4j
与Spring的Wss4jSecurityInterceptor
结合使用:
@Bean
public Wss4jSecurityInterceptor securityInterceptor() {
Wss4jSecurityInterceptor interceptor = new Wss4jSecurityInterceptor();
interceptor.setSecurementActions("UsernameToken");
interceptor.setSecurementUsername("?");
interceptor.setSecurementPassword("?");
return interceptor;
}