You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为特定用户实现跨子域LocalStorage授权令牌共享

跨子域身份令牌共享实现方案

LocalStorage受浏览器同源策略约束,仅同协议、同域名、同端口的站点可访问存储内容,不同子域默认完全隔离,无法直接读取对方存储的Auth Token。要实现类似Jira的同组织子域切换免登效果,可选择以下几种成熟方案:

方案1:配置主域Cookie存储令牌(最推荐,Jira等商业化产品的主流实现)

这是落地成本最低、安全性最高的方案,操作逻辑如下:

  • 登录成功后,写入Auth Token到Cookie时,显式指定Domain属性为顶级主域,示例配置为domain=.site.com,前缀的点代表匹配所有归属该主域的子域,当前主流浏览器也支持不带前缀的domain=site.com配置,效果一致
  • 同步配置Path=/确保所有站点路径都可访问该Cookie,可根据安全需求搭配HttpOnly(禁止前端JS读取,防范XSS窃密)、Secure(仅HTTPS协议下传输)、SameSite属性加固
  • 配置完成后,company1.site.com、company2.site.com等所有同主域子域发起请求时,都会自动携带该Cookie,服务端直接校验Cookie中的令牌即可完成身份识别,无需前端在子域间手动传递令牌

注意:该方案仅适用于所有子域归属同一个顶级主域的场景,跨顶级主域无法使用该方案。

方案2:通过postMessage跨子域同步LocalStorage内容

如果业务要求必须使用LocalStorage存储令牌,可以通过统一中间页做通信传递:

  • 单独部署一个统一身份校验页,域名固定为sso.site.com,所有子域的登录状态统一以该页面LocalStorage中存储的令牌为准
  • 各个业务子域页面加载时,隐藏嵌入sso.site.com的iframe,通过postMessage向该iframe发起令牌查询请求
  • iframe侧校验请求来源属于授信的同主域子域后,将自身LocalStorage存储的有效令牌通过postMessage回传给业务子域,业务子域拿到令牌后写入自身LocalStorage即可完成身份同步
  • 必须严格校验postMessage的请求来源域名,防止未授信站点窃取令牌。

方案3:URL参数临时传递令牌(仅适用于固定跳转场景)

如果只是子域间主动跳转的场景,可以临时用URL参数传递令牌:

  • 从A子域跳转到B子域前,将Auth Token加密后拼接到跳转URL的参数中,同时给令牌设置极短的有效期
  • B子域加载时读取URL中的令牌参数,校验解密通过后写入自身存储,立刻清理URL中的令牌参数,避免被浏览器历史记录、服务端日志等留存泄露

注意:该方案存在较高的令牌泄露风险,仅可作为临时补充方案使用,不推荐作为核心实现。

内容的提问来源于stack exchange,提问作者Marius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:45:09