当使用主 Cookie 域时,是否应该使用 Javascript 和 IFrame 来刷新会话?

信息安全 验证 Web应用程序 应用安全
2021-08-23 06:32:52

假设我有 3 个站点想要在其中使用 SSO,site1.com、site2.com 和 auth.com。始终需要 SSL。

根据此处描述 SiteMinder cookie 的方式,其中一个域将是关联的“主 cookie”域,而其他域将在身份验证失败的情况下重定向到该域。

目前的工作方式

  1. 为防止点击劫持,auth.com 的登录页面具有 NoFrames 脚本和为旧版浏览器实现的帧破坏器脚本。

  2. 在客户端登录到 site1.com 或 site2.com 后,AJAX 会启动并执行一些操作(轮询等)。在此期间,Javascript 可能会收到一条错误消息,指出会话无效。使用 AJAX 时会发生此错误。(如果它发生在浏览时,会有一个重定向,这整个问题不适用)

  3. 此时我可以刷新页面并重定向,或者告诉用户在 auth.com 上再次登录,但随后我丢失了内存中的应用程序状态。

面向最终用户的新/无缝方法

作为一种解决方法,我正在考虑使用 Javascript 创建一个 iFrame 来auth.com/RefreshOnly(iFrames OK)发布我的会话数据。 Auth.com/RefreshOnly将看到其域的 cookie,如果它选择,重定向到我的 origin site1.com,指示它更新我当前的 cookie.... 都在一个隐藏的 iFrame 中。

问题

在 IDP/身份验证提供商中是否允许 iFrame 的这种有限使用?(不是 Siteminder 独有的)

1个回答

在我看来,您提出的建议并不违反正常的工作流程。您正在从断言方(站点 1 或站点 2,AP)向服务提供商 (auth-SP) 发出请求,而后者又向身份提供商 (IdP) 发出请求。

当站点接受信用卡但不想承担 PCI 监管负担时,实施这种方法也很常见。像 Cyber​​source 这样的公司充当 SP 并在 AP 网页内的 iframe 中接受用户输入。就 PCI(支付卡行业,以防首字母缩写词晦涩难懂...)而言,没问题。

我不确定确认号码是如何返回给 AP 的,但这并不重要。