【发布时间】:2018-04-27 08:49:07
【问题描述】:
我正在构建由后端和前端(Web)部分组成的 Web 应用程序。我想在这两部分之间引入身份验证,我的目的是为此使用 OAuth2。
前端部分将充当 OAuth 客户端,后端将充当 OAuth 提供者 - 因此后端将发布访问和刷新令牌。
我的计划当然是将刷新令牌存储在后端,并将访问令牌存储在前端(并将访问令牌与每个请求一起作为标头参数发送)。假设访问令牌持续 24 小时,刷新令牌持续 3 个月。
我的问题是我应该何时(以及如何)刷新存储在前端的访问令牌? (我问这个是因为我想在它过期之前刷新它;如果没有必要,不想让用户面对登录流程)
- 我是否应该在每次成功请求后返回新的访问令牌并将其存储在前端(听起来不是一个好主意)
- 如果现有的访问令牌即将过期,我是否应该返回新的访问令牌 - 可能需要在前端检查是否通过标头参数返回新的访问令牌,以及是否要替换旧的访问令牌。
- 我是否应该在前端存储访问令牌和刷新令牌,如果访问令牌已过期,则使用刷新令牌获取新令牌
- 还有别的吗?
我不确定最佳做法是什么。
【问题讨论】:
-
你的资源服务器是什么?即
frontend是什么 API 将提供access_token以获取资源?您的frontend应用程序是带有服务器的 Web 应用程序,还是在浏览器中运行的单页应用程序?您将使用哪种 OAuth 授权类型?
标签: oauth-2.0 authorization single-sign-on access-token refresh-token