我当前正在使用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;
}

09-06 06:00