【问题标题】:Avoid refresh token for authentication when using HttpOnly cookie使用 HttpOnly cookie 时避免刷新令牌进行身份验证
【发布时间】:2022-08-09 14:44:14
【问题描述】:

我有一个不使用刷新令牌的身份验证系统解决方案。请告诉我这种方法的漏洞在哪里。

我假设以下内容:

  • 客户端和服务器在同一个域中。
  • 客户端是支持 HttpOnly cookie 的浏览器。
  • 客户端正在使用单页应用程序。

步骤是:

  1. 用户登录通过使用凭据向/api/auth 发出请求。
  2. 服务器验证用户并返回一个设置 Cookie 标头带着HttpOnly包含 JWT 的 cookie。
  3. 客户端接收并设置 HttpOnly cookie。客户端也设置了本地存储一个变量logged: true
  4. 一段时间后,用户重新打开浏览器。单页应用程序检查本地存储中的变量logged 是否为== true。如果是这样,请检查它是否仍然具有 HttpOnly cookie/api/check-cookie提出请求.
  5. 服务器响应true 如果找到 HttpOnly cookie它是有效的。否则false
  6. 客户端,如果从/api/check-cookie收到false,将提示用户登录。

    使用这种方法,JWT 可以有很长的到期日期,并且不需要跟踪刷新令牌。

    我错过了什么吗?

    标签: authentication oauth jwt local-storage cookie-httponly


    【解决方案1】:

    我喜欢你的想法并且有类似的想法,特别是设置一个本地存储变量来反映登录状态,所以我可以在进行毫无意义的服务器调用以刷新可能不存在的令牌之前检查这一点,但是,我仍在使用刷新令牌。

    我相信您的问题的症结在于,当用户在服务器端更新时,它不会反映在客户端,直到用户使用新的持久的单一令牌重新进行身份验证,而不是短时-实时访问令牌刷新,使用更新的数据再次设置用户。

    【讨论】:

      猜你喜欢
      • 2019-04-04
      • 2017-11-08
      • 1970-01-01
      • 2023-04-02
      • 2019-11-29
      • 1970-01-01
      • 1970-01-01
      • 2021-05-10
      • 2020-07-07
      相关资源
      最近更新 更多