在客户端,我有以下spring bean:
<bean id="partneriLogicImpl" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
<property name="serviceUrl" value="http://localhost:8080/hr.spi.service/hessian/lcspi/lczaj/partneri" />
<property name="serviceInterface" value="hr.spi.logic.lcspi.lczaj.PartneriLogic" />
</bean>
我正在调用Hessian Web服务:
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContextHessian.xml");
PartneriLogic partneriLogic = (PartneriLogic) context.getBean("partneriLogicImpl");
List<?> partnerList = partneriLogic.dohvatiSveZaExport();
这很好用,直到我打开服务器端的Spring Security,之后我得到了预期的错误 - “服务器返回HTTP响应代码:403”。
那么,如何在客户端配置用户名和密码?
答案 0 :(得分:2)
根据API Doc,org.springframework.remoting.caucho.HessianProxyFactoryBean默认为HTTP基本身份验证提供两种setter方法:
设置此工厂用于访问远程服务的用户名。默认为无。
用户名将由Hessian通过HTTP基本身份验证发送。
设置此工厂用于访问远程服务的密码。默认为无。
密码将由Hessian通过HTTP基本身份验证发送。
如何在客户端配置用户名和密码?
在applicationContext.xml中,像这样定义你的HessianProxyFactoryBean:
<bean id="partneriLogicImpl" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
<property name="serviceUrl" value="http://localhost:8080/hr.spi.service/hessian/lcspi/lczaj/partneri" />
<property name="serviceInterface" value="hr.spi.logic.lcspi.lczaj.PartneriLogic" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</bean>
答案 1 :(得分:0)
我尝试设置用于身份验证的用户名和密码,但它无效。
最后,我找到了一个解决方案 - 也许这是一个糟糕的解决方案。
这是在Hessian服务URL上禁用Spring Security。
我认为这不是一个好的解决方案,但它有效......
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/hessianServiceUrl");
}
...
}