将BASIC身份验证数据传递到spring ws客户端

时间:2014-07-26 21:54:16

标签: spring web-services soap spring-ws

我有一个Web服务,其服务器使用基本的http身份验证来授予访问权限

Web服务本身有自己的身份验证用户名和密码

在设置所需参数后,可以使用SOAP UI访问WS

我没有开发一个使用spring来访问Web服务的UI客户端

我的问题是如何在打开Web服务器页面时发送用户输入的HTTP身份验证,以便他可以访问Web服务

1 个答案:

答案 0 :(得分:2)

当前的春季文档文档中有一个例子(第6.1章): http://docs.spring.io/spring-ws/site/reference/html/client.html#client-transports

我引用配置中有趣的部分:

<bean id="webServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
  <constructor-arg ref="messageFactory"/>
  <property name="messageSender">
    <bean class="org.springframework.ws.transport.http.HttpComponentsMessageSender">
        <property name="credentials">
            <bean class="org.apache.http.auth.UsernamePasswordCredentials">
                <constructor-arg value="john:secret"/>
            </bean>
        </property>
    </bean>
  </property>
  <property name="defaultUri" value="http://example.com/WebService"/>
</bean>

我之前使用过的Spring WS的最新版本(1.x),但您可以使用Spring WS轻松访问Apache Commons HTTPClient API提供的任何内容。 使用WSTemplate系统时,覆盖点是WSMessageSender。但上面建议的方法允许直接从Spring配置中完成所有操作。

在您的方案中,您可以提供UsernamePasswordCredentials的实现,该实现具有回调以询问用户凭据,或者以其他方式注入。