首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Soap安全标头中设置自定义标记(Spring WS)

在Soap安全标头中设置自定义标记(Spring WS)
EN

Stack Overflow用户
提问于 2015-10-10 00:05:04
回答 2查看 1K关注 0票数 3

我正在使用SpringWSTemplate客户端发送消息。使用方法sendSourceAndReceiveToResult(Source requestPayload, WebServiceMessageCallback requestCallback, Result responseResult)

在这里,我使用wss4jsecurityinterceptor设置了一些安全凭证。但目前我需要在usernametoken中设置一个自定义标记(RegisterKey),如下所示。

代码语言:javascript
复制
<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中。

EN

回答 2

Stack Overflow用户

发布于 2016-05-16 13:34:15

spring-ws依赖项已经提供了这些详细信息。

代码语言:javascript
复制
<dependency>
            <groupId>org.springframework.ws</groupId>
            <artifactId>spring-ws-security</artifactId>
            <version>1.5.6</version>
</dependency>

在spring-config.xml中添加以下详细信息以获取以下详细信息

代码语言:javascript
复制
<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

票数 1
EN

Stack Overflow用户

发布于 2015-10-29 20:55:52

我已经通过实现ClientInterceptor完成了这项工作

代码语言:javascript
复制
org.springframework.ws.client.support.interceptor.ClientInterceptor

ClientInterceptor确实有一个handleRequest(MessageContext context)方法,我们可以在其中操作请求消息(包括SoapHeaders)。

使用org.apache.axiom.om.OMContainer可以遍历元素,使用org.apache.axiom.om.impl.llom.OMElementImpl可以添加新元素并设置它的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33042710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档