我刚刚看了一个spring security的教程。我遇到了一个问题,我有一个jwt应用程序,想激活csrf。但是它对/login不起作用。当我创建一个不需要身份验证的路径时,csrf令牌起作用。只有对路径/login它不起作用。
这是我的配置
@Override
protected void configure(HttpSecurity http) throws Exception {
http
//.csrf().disable()
.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.addFilter(new JwtUsernameAndPasswordAuthenticationFilter(authenticationManager(), jwtConfig, secretKey))
.addFilterAfter(new JwtTokenVerifier(secretKey, jwtConfig),JwtUsernameAndPasswordAuthenticationFilter.class)
.authorizeRequests()
.antMatchers("/", "index", "/css/*", "/js/*").permitAll()
.antMatchers("/public/**").permitAll()
.antMatchers("/api/**").hasRole(USER.name())
.anyRequest()
.authenticated();
}
我试着自己去谷歌一下,但是答案对我来说太高了。也许有人能用简单的话帮助我。
未认证的公共请求x1c 0d1x
以及/login请求,其中csrf标记不能工作
1条答案
按热度按时间q3aa05251#
谢谢你的问题,你可以参考下面的文章来解决这个问题。
https://www.baeldung.com/csrf-stateless-rest-api
可以根据本文为REST API实现Csrf保护,因为在某些可能的情况下,攻击者可能会尝试从用户的浏览器存储中窃取令牌,并使用它来访问应用程序的REST端点。
根据文章
Spring期望在X-XSRF-TOKEN标头中接收它
因此您可以尝试在X-XSRF-TOKEN报头中发送令牌,而不是cookie。
希望这个有用。
谢啦,谢啦