0

我正在尝试为我的出站 SOAP 服务添加一个带有 wss4j 身份验证的 SOAP:Header。

下面是我的 WebServiceTemplate 和拦截器配置

<bean id="securityHeader"
    class="org.springframework.ws.soap.security.wss4j.Wss4jSecurityInterceptor">
    <property name="securementActions" value="UsernameToken" />
    <property name="securementUsername" value="uname" />
    <property name="securementPassword" value="password@123" />
    <property name="securementPasswordType" value="PasswordText" />
    <property name="securementUsernameTokenElements" value="Nonce Created" />
</bean>`

<bean id="webService" class="org.springframework.ws.client.core.WebServiceTemplate">
    <constructor-arg ref="messageFactory" />
    <property name="messageSender">
        <bean
            class="org.springframework.ws.transport.http.CommonsHttpMessageSender">
            <!-- <property name="credentials" ref="credentials" /> -->
        </bean>
    </property>
    <property name="interceptors">
    <list>
        <ref bean="securityHeader" />
    </list>
</property>
    <property name="defaultUri"
        value="https://test.test.com/ws/service/test" />        
    <property name="marshaller" ref="fmarshaller" />
    <property name="unmarshaller" ref="forwardunmarshaller" />
</bean>

但是当出站调用发生时,它不会添加 SOAP 安全标头。webService.marshalSendAndReceive("http://localhost:8088/mockBinding",request);

4

1 回答 1

0

以下更改对我有用。

  1. 将 SOAP 版本更改为 1.1
  2. 在拦截器中定义 bean 声明而不是引用它。
  3. 使用 Web 服务消息回调。
于 2015-09-16T00:27:39.973 回答