gpt4 book ai didi

java - SOAP 客户端基本身份验证 : HTTP response '401: Unauthorized'

转载 作者:数据小太阳 更新时间:2023-10-29 02:22:08 30 4
gpt4 key购买 nike

我正在尝试创建一个必须调用使用 http 基本身份验证的服务器的 SOAP 客户端。我收到以下错误:

    org.apache.cxf.interceptor.Fault: Could not send Message.
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
...
Caused by: org.apache.cxf.transport.http.HTTPException: HTTP response '401: Unauthorized' when communicating with http://localhost:8080/SpringMVCTest/services/ContractService?wsdl=ContractService.wsdl

我的 app-config.xml 是:

    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:security="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">

<security:http auto-config="true">
<security:intercept-url pattern="/services/*"/>
<security:http-basic/>
</security:http>

<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<security:user name="wsuser1" password="pw123" authorities="wsuser" />
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>

<bean id="client" class="hu.bz.ikti.insurance.service.insurer.ContractService"
factory-bean="clientFactory" factory-method="create"/>

<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="hu.bz.ikti.insurance.service.insurer.ContractService"/>
<property name="address" value="http://localhost:8080/SpringMVCTest/services/ContractService?wsdl=ContractService.wsdl"/>
</bean>

</beans>

http 基本身份验证在服务器 web.xml 中配置:

   <security-constraint>  
<web-resource-collection>
<url-pattern>/services/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>wsuser</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
<security-role>
<role-name>webservice</role-name>
</security-role>

在 tomcat-users.xml 中添加了用户:

<user username="wsuser1" password="pw123" roles="wsuser"/>

我可以在提供用户名/密码的浏览器中打开 wsdl。什么会导致客户端出现此 401:未经授权的错误?

最佳答案

根据此处的 CXF 文档:

https://cxf.apache.org/docs/jax-ws-configuration.html (请参阅配置 Spring 客户端(选项 2))

设置用户名和密码的正确方法是在 clientFactory bean 配置中使用 usernamepassword 属性。

所以将这些添加到您的 clientFactory bean 中:

<property name="username" value="yourUsername"/>
<property name="password" value="yourPassword"/>

关于java - SOAP 客户端基本身份验证 : HTTP response '401: Unauthorized' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17722277/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com