oauth - 如何在多个选项卡之间共享 oauth 令牌
问题描述
我的 Angular 应用程序使用 oauth 令牌(在每个请求的标头授权中添加)来联系 REST 服务。我们使用 angular-auth-oidc-client。令牌存储在会话存储中,以便在关闭浏览器时将其删除。
我们如何处理同一个应用程序(同一个域)的多个选项卡?在我的例子中,IDP 提供的会话 cookie 的生命周期很短(1 小时),但 Oauth 令牌本身的有效期为 1 天。因此,如果我在 1 小时内使用我的 webapp 打开另一个选项卡,它将获得一个新的 Oauth 令牌。经过这个延迟,新标签将重定向到登录屏幕,这就是为什么我要寻找一种方法来为每个标签保留令牌。
可以通过以下方式打开选项卡:
- 用户打开一个空选项卡并放置 webapp 的 url:会话存储最初是空的
- 用户单击 target="_blank" 和 href="same url as webapp" 的链接:会话存储为空
- window.open:新选项卡获取会话存储的精确副本
可能的解决方案:
- 通过每次修改会话存储来在多个选项卡之间共享令牌?这意味着拥有一个成为“领导者”的选项卡并将令牌分发到其他“跟随者”选项卡(例如,通过使用广播频道)。稍后可能会出现另一个问题:如果我们使用刷新令牌,所有选项卡将同时使用刷新令牌(除非我们在会话存储中使用一种在所有选项卡之间共享的标志,但它可能不是 100% 防弹的)。
- 使用充当代理的服务工作者
你看到任何更清洁的解决方案吗?
谢谢。
解决方案
推荐阅读
- python - 我如何在 <> "hi 中获取字符串
" - python - How to clean up captcha image?
- linux - 如何设置 EGL 默认显示?
- javascript - Express.js sometimes passes the router
- php - 为什么不编辑 .htaccess 文件?
- python - How train the pytorch model with another freeze model?
- testing - Your role configuration do not allow you Assign Roles for Test Plans : Testlink Error
- javascript - JS expression to calculate the average value of all given data points within a month, for all months represented in the data points
- amazon-web-services - Configure email for AWS lightsail cpanel and Godaddy registered domain
- python-3.x - How do I write into a CSV file without removing anything in it in Python?