JWT访问令牌和刷新令牌安全性

时间:2018-05-06 00:17:52

标签: security jwt token refresh access

我正在为前端Reactjs和后端SpringBoot(REST)创建一个应用程序。

我想使用JWT令牌来提高安全性。由于窃取JWT刷新令牌的安全问题可能意味着,我想问你以下场景是否有效:

  • 后端

    • 登录时创建access-JWT和refresh-JWT
    • 在有效负载部分中设置了相同的唯一UUID(因此我在它们之间创建了一个“链接”)。
    • 在DB中保存refresh-JWT的hashCode(用于将来的有效性检查)
    • 在body access-JWT和cookie refresh-JWT中作为响应返回。
  • 前端

    • 将访问权限存储在JWT本地存储中
    • 将refresh-JWT存储为cookie

现在,在每个来自前端的请求中,我都将对两个令牌(access-JWT in header和refresh-JWT as cookie)进行说明。如果它们具有相同的唯一UUID,我会检查它们。如果他们这样做,我将继续他们的验证过程。

这样做我正在努力消除XSS和CSRF攻击,假设这些攻击不会同时进行。因此,如果访问-JWT被盗,攻击者将无法刷新-JWT,反之亦然。

请分享您的想法。谢谢。

1 个答案:

答案 0 :(得分:0)

您应该避免发明自己的身份验证/会话管理方案,因为微小的细节可能会破坏整个系统的安全性。

引自Auth0' Which OAuth 2.0 flow should I use?

  

此外,应该注意隐式授权不返回刷新令牌,因为浏览器无法将其保密(请参阅SPA和刷新令牌面板以获取解决方法)。

我建议使用标准的OpenID Connect(或OAuth 2.0)流程 - 在您的情况下使用隐式流程