试图找到一个带有刷新令牌的“万无一失”oauth架构的例子

时间:2017-10-06 06:20:46

标签: angular authentication oauth jwt

我正在为我的角度应用程序设置oauth和刷新令牌,我有一个要求列表:

  • 定期刷新令牌(例如,剩余5%的时间)
  • 处理连接丢失(再次连接时刷新)
  • 在浏览器中处理多个标签(所有标签同时尝试刷新同一标记,在另一个标签中注销等)
  • 当令牌无效/刷新时暂停/重试HTTP请求

目前我正在尝试自己构建整个刷新逻辑,但是我一直在遇到一些使这个过程复杂化的问题。例如多个标签。一个选项卡刷新令牌并获得一个新令牌。在其他选项卡选中之前,它会尝试刷新旧令牌(使用现在无效的刷新令牌)并且刷新失败。

我觉得必须有很多其他人和我有同样的要求,并且必须有这样的示例/库/开源项目吗?有谁知道任何可以帮助我的资源?

1 个答案:

答案 0 :(得分:2)

我们确实做到了这一点,但是我怀疑整个设置是否可以使用任何库,因为这涉及前端和后端,您可能会为每种编程语言使用不同的框架,并且可能会使用不同的编程语言。

简而言之,我们应用的解决方案是:

  • 登录后,向客户端颁发访问令牌和刷新令牌
  • 刷新令牌作为仅HTTPS cookie呈现给客户端
  • 访问令牌由客户端存储在本地存储中
  • 同步过程可确保访问令牌在标签中的多个客户端之间同步
  • 访问令牌过期后,将拦截401请求,并使用刷新令牌请求新的访问令牌
  • 失败的401请求将自动重试()
  • 通过其中一个标签获取新的访问令牌后,其他客户端将通过同步过程获取并使用新的访问令牌

要解决的难题很多,但是一旦您清楚自己在做什么以及希望它如何工作,就可以轻松设置它。与所有内容一样,根据您自己的特定用例和安全要求,当然还有很大的修改或改进空间。