使用Bearer JWT令牌时Spring Security是否自动禁用CSRF校验?
问题解答
是的,Spring Security会对携带Bearer格式JWT令牌的请求自动豁免CSRF校验,这是框架的默认行为。
背后的逻辑
CSRF攻击的核心是利用浏览器在跨站请求中自动携带Cookie的特性,而Bearer令牌是通过Authorization请求头传递的,浏览器不会自动为跨站请求添加这个头,因此这类请求本身不存在CSRF攻击的风险。Spring Security默认会识别这类请求,并跳过CSRF校验。
对应你的现象分析
- 当不传递JWT时,你的POST请求属于未认证的普通请求,Spring Security默认启用CSRF校验,因此返回
An expected CSRF token cannot be found错误。 - 当请求携带
Authorization: Bearer ...头时,Spring Security识别这是OAuth2资源服务器的认证请求,触发默认的CSRF豁免规则,因此不会进行CSRF校验,请求可以正常处理。
关于你的配置
你基于Spring官方文档配置的Reactive OAuth2资源服务器(使用ServerHttpSecurity和oauth2ResourceServer(jwt())),已经自动包含了这个CSRF豁免逻辑,不需要额外添加配置。
内容的提问来源于stack exchange,提问作者Clyde D'Cruz
相关产品推荐
相关产品推荐

