X-CSRF-TOKEN不是由Spring Boot生成的 - java

我在这里遵循了指南:http://spring.io/guides/gs/rest-service/来构建我的休息服务示例,现在我正在尝试启用CSRF保护。我读到它应该默认启用,所以如果我不包括:

http.csrf()。disable()

在我的WebSecurityConfigurerAdapter配置中,默认情况下应启用CSRF保护,但事实并非如此。问题是X-CSRF-TOKEN不会生成,也不以任何方式包含在我的HTTP响应中。
我应该怎么做才能使x-csrf令牌生成并包含在响应中,并且当然,csrf保护也可以正常工作?

我注意到,使用类似的spring mvc配置,得到的x-csrf-token生成仅包括:

在我的安全配置文件中。但是,使用Spring Boot可能是我出了点问题,并且无法生成csrf令牌。有人可以帮我,也许可以给我指出一个可行的例子吗?我的安全配置是:

     @Override
     protected void configure(HttpSecurity http) throws Exception 
     {
        http
      // .csrf().disable()
      .authorizeRequests()
          .anyRequest()
          .authenticated()
      .and()
      .httpBasic()
      .authenticationEntryPoint(new RestAuthenticationEntryPoint())
      .and()
      .formLogin()
      .successHandler(new RestAuthenticationSuccessHandler())
      .failureHandler(new SimpleUrlAuthenticationFailureHandler())
      .and()
      .logout()
      .logoutSuccessHandler(new RestLogoutSuccessHandler());
}

@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception 
{
    auth.userDetailsService(restUserDetailService);
}

参考方案

要将CSRF令牌包含在csrf保护中,可以包含CSRFTokenRepository生成令牌。为了说明您的情况,添加一条简单的行就足够了:

 @Override
 protected void configure(HttpSecurity http) throws Exception 
 {
  http.
  .csrf()
  .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()) //HERE !  Defaults XSRF-TOKEN as cookie name and X-XSRF-TOKEN as header name  
  .authorizeRequests()
  .anyRequest()
  .authenticated()
  .and()
  .httpBasic()
  .authenticationEntryPoint(new RestAuthenticationEntryPoint())
  .and()
  .formLogin()
  .successHandler(new RestAuthenticationSuccessHandler())
  .failureHandler(new SimpleUrlAuthenticationFailureHandler())
  .and()
  .logout()
  .logoutSuccessHandler(new RestLogoutSuccessHandler());}

Spring MVC中的输入验证 - java

我知道Commons Validator框架是Struts项目在服务器端和客户端验证输入值的事实上的标准。Spring MVC项目是否也是如此?我得到的印象可能不是,大多数Struts书籍和论坛都谈论Commons Validator框架,但是只有少数Spring书籍和论坛可以。在Spring MVC项目中验证输入的最佳实践是什么?干杯! 参考方案 在引入S…

Java:“自动装配”继承与依赖注入 - java

Improve this question 我通常以常见的简单形式使用Spring框架: 控制器服务存储库通常,我会在CommonService类中放一个通用服务,并使所有其他服务扩展到类中。一个开发人员告诉我,最好在每个服务中插入CommonClass而不是使用继承。我的问题是,有一个方法比另一个更好吗? JVM或性能是否会受到另一个影响?更新资料Comm…

Spring MVC Web应用程序检测暴力攻击的最佳方法? - java

Spring 3.0 MVC中是否有专门用于帮助检测Web应用程序的身份验证/登录页面上的蛮力攻击的功能? 参考方案 经过长期验证的实践是,如果身份验证失败,则会引入随机但相当大的延迟。这样,合法用户将立即登录,但攻击者每次尝试将花费500ms-1s,这使整个暴力概念不切实际(将永远存在)。合法用户偶尔失败的登录只会使他们稍有延迟,并且不会引起注意。如果需要…

Spring Data Cassandra的事务管理 - java

我正在使用Spring和Cassandra作为基础数据库。曾提到过弹簧伞项目“ spring data cassandra”。与休眠不同,在这里无法找到如何管理事务。如果您中的某些人已经合并,请共享要包含的事务管理器的详细信息。 参考方案 Cassandra不支持传统(ACID)的事务。在某些特殊情况下,可以通过一些构造来实现事务原子性,例如原子批处理(请参…

在IntelliJ Spring Boot项目的静态目录中添加子目录会重命名吗? - java

我是IntelliJ的新手,并且使用它来创建Spring Boot应用程序。我有以下项目结构: 我需要在“resources”目录下的“static”目录下创建一个“css”目录,以便可以在Thymeleaf网页模板中放入要使用的CSS文件。然后,我尝试通过右键单击“静态”目录并使用新建->目录对话框来添加“css”子目录。如下图所示,它没有以“sta…