首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当服务器中启用csrf保护时,httpinvoker无法工作。

当服务器中启用csrf保护时,httpinvoker无法工作。
EN

Stack Overflow用户
提问于 2015-03-25 10:26:16
回答 1查看 602关注 0票数 0

我有两个使用spring安全保护的spring应用程序。这两个应用程序通过spring httpInovoker相互通信。访问控制工作正常。但是,当我在spring中启用<csrf/>时,在<http auto-config="true">标记下,httpinvoker返回403状态。Stacktrace如下所示。但是,在没有csrf保护的情况下,相同的代码正在成功运行。请帮帮忙

代码语言:javascript
复制
org.springframework.remoting.RemoteAccessException: Could not access HTTP invoker remote service at [http://172.28.1.162:6060/ReporterRepository/ExposedLinkService.http]; nested exception is java.io.IOException: Did not receive successful HTTP response: status code = 403, status message = [Forbidden]

Spring安全xml

代码语言:javascript
复制
<http auto-config="true">
    <intercept-url pattern="/home**" access="ROLE_ADMIN,ROLE_USER" />
            <intercept-url pattern="/admin**" access="ROLE_ADMIN" />
    <form-login 
        login-page="/loginuser" 
        default-target-url="/home" 
        authentication-failure-url="/loginuser?error" 
        username-parameter="username"
        password-parameter="password" />
    <logout logout-success-url="/loginuser?logout"  />
    <!-- enable csrf protection -->
    <csrf/>
</http>

<authentication-manager erase-credentials="false">
    <authentication-provider user-service-ref="myUserDetailsService" > 
    </authentication-provider>
</authentication-manager>

调用代码:

代码语言:javascript
复制
HttpInvokerProxyFactoryBean HttpinvokerFactory = new HttpInvokerProxyFactoryBean();
HttpinvokerFactory.setServiceInterface(ExposedLinkServiceInterface.class);
HttpinvokerFactory.setServiceUrl(ServiceUrl);
HttpinvokerFactory.setHttpInvokerRequestExecutor(( HttpInvokerRequestExecutor)ServerFramework.getInstance().getBean("httpInvokerRequestExecutor"));//Return the bean httpInvokerRequestExecutor
HttpinvokerFactory.afterPropertiesSet();

ExposedLinkServiceInterface exposedservice = (ExposedLinkServiceInterface) HttpinvokerFactory.getObject();                
List AvailabaleLinks= exposedservice.retrieveAllLinks();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-25 13:03:32

我认为这里的关键是为HttpInvoker URL创建一个单独的配置:

代码语言:javascript
复制
 <http pattern="/your-httpinvoker-path" create-session="stateless">
   <!-- security for httpinvoker without csrf protection -->
 </http>

 <http auto-config="true">
   <!-- same as before -->
 </http>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29253056

复制
相关文章

相似问题

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