如何将 Spring Security 的 CSRF 功能用于无状态端点?

Posted

技术标签:

【中文标题】如何将 Spring Security 的 CSRF 功能用于无状态端点?【英文标题】:How to use Spring Security's CSRF feature for stateless endpoints? 【发布时间】:2014-01-04 13:10:04 【问题描述】:

我正在使用带有无状态 Web 服务的 Spring Security。我想使用 Spring Security 3.2 中的 CSRF 功能。无状态网络应用可以做到这一点吗?

这是相关的 Java Config,因为我暂时不得不禁用 CSRF。

@Override
protected void configure(HttpSecurity http) throws Exception 
    http
            .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .sessionFixation().none().and()
            .csrf().disable();

【问题讨论】:

您的网络服务是否完全可以在网络浏览器中使用? 是的。主要用于单页网页应用(AngularJS) 查看方法:blog.jdriven.com/2014/10/… 【参考方案1】:

如果您的服务真的是无状态的,那么 CSRF 保护可能根本没有意义。只要服务器不使用 cookie 来识别/验证用户,您的服务就不会受到 CSRF 攻击。

详细解释见http://sitr.us/2011/08/26/cookies-are-bad-for-you.html

【讨论】:

以上是关于如何将 Spring Security 的 CSRF 功能用于无状态端点?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security + Keycloak 授权:如何将端点与资源相关联?

如何将凭据从 Angular 前端传递到 Spring 后端(Spring Security 的基本身份验证)

如何将 Spring Security 与 Spring Boot Rest API 一起使用?

如何将 OAuth 身份验证与 Spring Security 联系起来

如何将 spring security 与 rest oauth2 服务和 spring social 集成?

Spring 3,Spring Security,LDAP,如何向 LDAP 添加角色?