java - 在 Soap Security Header (Spring WS) 中设置自定义标签

标签 java xml spring web-services soap

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

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

<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) 注入(inject)自定义标记,但它被直接注入(inject)到 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

关于java - 在 Soap Security Header (Spring WS) 中设置自定义标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33042710/

相关文章:

java - 用并行流替换 for 循环 - Java

java - 通过java代码初始化EditTextPreference的defaultValue

python - Elementtree,检查元素是否有特定的父元素?

java - 我们可以有选择地获取 Hibernate 中关联连接对象的列吗?

java - 在 Javafx 中插入 Pane

java - 如何在 selenium Web 驱动程序中获取跨度类值的属性

java - 如何在 JavaFX 中将 GUI 覆盖在 3D 场景上?

java - 在android中解析xml文件

java - 使用 getCurrentSession() 时出现 "No Session found for current thread"异常

java - Spring Boot 示例 RESTful 服务在创建新包后将无法工作