带有 JWT auth 和 csrf 令牌的 Spring Boot STATELESS 应用程序
Posted
技术标签:
【中文标题】带有 JWT auth 和 csrf 令牌的 Spring Boot STATELESS 应用程序【英文标题】:Spring boot STATELESS application with JWT auth and csrf token 【发布时间】:2020-02-17 23:25:11 【问题描述】:我有带有 JWT 身份验证的 Spring Boot 应用程序,效果很好! 但是我已经使用 STATELESS Policy 禁用了 csrf:
.csrf()
.disable()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
此 Rest API 适用于 SPA React 应用程序。我读到,当我使用 JWT 令牌时,我不需要设置 csrf 令牌。 JWT 是否像 csrf 保护(HOW)一样工作?我认为这不是 csrf 保护。
【问题讨论】:
您找到答案了吗?我面临同样的问题,没有任何解释。在 Spring Security 中,他们提到即使是无状态设置也不受定义保护。 【参考方案1】:CSRF 攻击是利用浏览器总是在对所请求服务器的请求中包含 cookie(包括会话 ID)这一事实,因此攻击者在执行恶意操作时假装自己是真正的用户。
如果您的端点是无状态的(这意味着您没有使用 cookie 进行身份验证),那么您不需要 CSRF 保护。
【讨论】:
只是补充一下——考虑到在使用 SPA 时,用户的应用程序(re: session)状态存储在本地客户端上,但在使用旧式 MVC 时,用户状态存储在服务器上并且需要通过网络进行往返才能使用。由于网络通信组件,MVC 需要一个额外的 CSRF 令牌来防止冒充者劫持另一个用户的会话,而 SPA 本质上根本不需要它。以上是关于带有 JWT auth 和 csrf 令牌的 Spring Boot STATELESS 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
JWT Auth 令牌适用于 Homestead,但不适用于生产服务器
Auth0 - 在 Owin 上使用带有承载访问令牌的 JWT 使用 RS256 进行身份验证