刷新OAuth2访问令牌

时间:2018-04-26 20:36:59

标签: oauth-2.0 authorization single-sign-on access-token refresh-token

我正在构建Web应用程序,它将包含后端和前端(Web)部分。我想在这两部分之间介绍auth,我的意图是使用OAuth2。

前端部分将充当OAuth客户端,后端将充当OAuth提供商 - 因此后端将发出访问权限并刷新令牌。

我的计划是在后端存储刷新令牌,并在前端存储访问令牌(并将每个请求作为头参数发送访问令牌)。让我们说访问令牌持续24小时,刷新令牌持续3个月。

我的问题是我何时(以及如何)刷新存储在前端的访问令牌? (我问这个是因为我想在它过期之前刷新它;如果没有必要,不想让用户使用登录流程)

  1. 我应该在每次成功请求后返回新的访问令牌并将其存储在前端(听起来不是一个好主意)
  2. 如果现有的访问令牌刚过期,我是否应该返回新的访问令牌 - 如果通过头参数返回新的访问令牌,可能需要检查前端,如果是,则更换旧的访问令牌。
  3. 我是否应该在前端侧存储访问和刷新令牌,如果访问令牌已过期,则使用刷新令牌获取新令牌
  4. 别的什么?
  5. 我不确定什么是最佳做法。

1 个答案:

答案 0 :(得分:0)

我认为3号是最好的情况。 如果您使用Cookie存储前端的两个令牌(access_token& refresh_token),则可以使用getCookie方法轻松检查请求。

检查来自请求的访问令牌

  1. if(isAccessTokenExpired)检查请求中的刷新令牌
  2. if(isRefreshTokenExpired)LoginRequiredException(custom excpetion and do something)
  3. else刷新令牌(延长时间或创建新令牌)和响应setCookie
  4. 别的,继续。