Spring Boot Security和Auth0 - 无法禁用CSRF

时间:2016-04-02 03:06:38

标签: java spring security reactjs spring-security

我正在构建一个RESTful Spring Boot和React / Alt应用程序。我想添加spring security以确保没有未经身份验证的API请求。

我使用Auth0作为身份验证提供程序,因此用户可以登录到应用程序,更具体地说是spring-security-auth0库,以处理服务器端安全方面的问题。 https://github.com/auth0/spring-security-auth0

在遵循Auth0的基本教程后,我在spring应用程序中配置了安全配置,以便在没有JSON Web令牌的情况下对API的请求不起作用。这有效,但是控制器中有一些端点(需要POST的端点)没有。我在Chrome devtools中遇到此错误 -

Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'

我知道没有CSRF标头,这就是它无法正常工作的原因。但我感到困惑的主要原因是因为我已经禁用了CSRF并且它仍然存在。正如春季文档所指示的那样,我已经做到了 -

@Configuration
@EnableWebSecurity
@ComponentScan("com.auth0")
@ImportResource("classpath:auth0-security-context.xml")
@PropertySource("classpath:auth0.properties")
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable();
    }

在这种情况下我不需要CSRF,因为应用程序只会在开发环境中使用。为什么即使我完全禁用了CSRF,这仍然会发生?

1 个答案:

答案 0 :(得分:0)

确定了负责异常的CsrfFilter。 这可能有各种原因。可以在某处配置另一个WebSecurityConfigurerAdapter实例吗?

您可以尝试以下操作:

在行中设置断点' http.csrf()。disable();'看它是否真的被执行了。

在WebSecurityConfigurerAdapter的构造函数中设置断点,以查看是否创建了多个实例。

这应该会告诉你哪里出错..