我正在使用SpringWSTemplate Client发送消息。
使用方法sendSourceAndReceiveToResult(Source requestPayload, WebServiceMessageCallback requestCallback, Result responseResult)
。
在此,我使用wss4jsecurityinterceptor
设置一些安全凭证。
但是目前,我需要在RegisterKey
内设置一个自定义标签(usernametoken
),如下所示。
<wsse:Security soap:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-11" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>test</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">a287645857cfaaddf82e2d333651b3e0</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">oKGlwEkbkhYJH6upsbiqeQ==</wsse:Nonce>
<wsu:Created>2011-10-25T13:10:11.958Z</wsu:Created>
<RegisterKey>UUUiiiIUBGGGTTT</RegisterKey>
</wsse:UsernameToken>
</wsse:Security>
我尝试使用Transformer(java.xml.transform.transformer)注入自定义标记,但是它直接注入
SoapHeader
而不是UsernameToken
内。 最佳答案
这些细节已经由spring-ws依赖项提供
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-security</artifactId>
<version>1.5.6</version>
</dependency>
在spring-config.xml中添加以下详细信息以获取以下详细信息
<bean id="xwsSecurityInterceptor"
class="org.springframework.ws.soap.security.wss4j.Wss4jSecurityInterceptor">
<property name="securementActions" value="UsernameToken" />
<property name="securementUsername" value="UNAME" />
<property name="securementPasswordType" value="PasswordText" />
<property name="securementPassword" value="Pass" />
<property name="securementMustUnderstand" value="false" />
</bean>
并将拦截器添加到webserviceTemplate