我们有一个多域平台,它使用中央域进行身份验证和 api 操作。
API & 认证 + 账户管理
https://example.com
只读 + 小部件操作
http://example.com
http://example.net
http://example.org
我已经阅读了大多数(如果不是全部)有关此类设置的 StackOverflow 问题,但无法深入了解此问题。(关于此的大多数问答都涉及一般原则,很少涉及细节)。
我们正在使用(一个 javascript iframe 代理库)在和其他域名Porthole.js
之间推送 API 调用。https://example.com
一切都很完美。
我正试图围绕“登录状态”和持久化用户数据来自定义 javascript。
看看像 StackOverflow 这样的网站是如何建模的,我的第一个想法是:
- 在 localStorage 中缓存登录状态 + 自定义数据(用户名、照片等)+ cookie 数据
https://example.com
10 分钟,或直到注销。10分钟后,缓存会命中服务器的API进行更新。 - 在第一次访问网络站点时,查询远程 localStorage。如果他们已登录,则代理返回登录状态、自定义数据和 http(不是 https)cookie id。然后此数据在 10 分钟内被视为“新鲜”,或直到注销。
- 来自的 cookie
http://example.com
被克隆到请求域,替换该会话。这允许我跨域使用单个 cookie / id。
我最担心的是最后一步——克隆 http cookie——尽管它只用于跟踪和“预览”访问。但是整个系统依赖于浏览器安全模型,我可能会遗漏一些东西。这似乎是一种优雅且“安全”的机制,就好像我使用了 AuthTicket 模型(用户访问https://example.com/auth-request?destination=http://example.net/auth-response,被重定向到http://example.net/auth-response?nonce=VERYBIGNUMBER)或在 iframe 中发出透明的 oAuth 请求。
任何人都可以阐明我错过的明显/明显的安全问题,或者这看起来和替代方案一样安全吗?