首页 > 解决方案 > 前端如何获取后端生成的 CSRF 令牌?

问题描述

我正在开发 Web 应用程序的后端 API(使用 Spring Boot)。API 使用 JWT 令牌对用户进行身份验证。我有一个用于注册帐户的端点 ( POST /register)。

由于它是一个 POST 方法,它需要来自前端的 CSRF 令牌,并且我还在每个响应的标头中附加了 CSRF 令牌。但是,当前端想要调用这个端点时,它需要首先发送一个虚拟注册请求(这将失败),只是为了获取 CSRF 令牌。我的问题是:有没有更好的方法让他们获得 CSRF 令牌?我应该在注册之前创建一个端点GET /csrf来获取令牌吗?

顺便说一句,由于我对网络安全性比较陌生,我想知道在每个响应中附加 CSRF 令牌是否是一种好习惯?这是我在 Spring 中的配置:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .csrf()
           .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
           .and()
        .sessionManagement()
           .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
           .and()
        .addFilter(new JwtAuthenticationFilter(authenticationManager()))
        .authorizeRequests()
        .antMatchers(HttpMethod.POST, "/register").permitAll()
        .anyRequest().authenticated();
}

标签: springcsrf

解决方案


推荐阅读