【发布时间】:2011-04-05 05:00:51
【问题描述】:
我想要的是,当一个人已经通过我的网站进行身份验证时,我想将此信息传递给第三方网站。其他网站应使用 JavaScript 验证这一点并允许访问。做这种事情的方法是什么?是通过传递会话 cookie 吗?
【问题讨论】:
标签: javascript cookies session-cookies
我想要的是,当一个人已经通过我的网站进行身份验证时,我想将此信息传递给第三方网站。其他网站应使用 JavaScript 验证这一点并允许访问。做这种事情的方法是什么?是通过传递会话 cookie 吗?
【问题讨论】:
标签: javascript cookies session-cookies
您不能跨域传递 cookie。实现 SSO 跨域的一种方法是让 SiteA 和 SiteB 共享允许加密/解密值的公共机密。 AES 是一个很好的算法。因此,如果用户在 SiteA 上通过身份验证,那么您可以通过在请求中传递包含用户名的加密令牌来提供到 SiteB 的链接。因为 SiteB 与 SiteA 共享相同的密钥,所以它能够解密它并获取用户名。一旦有了用户名,它就可以在第二个域上为该用户发出其身份验证 cookie。
我担心纯粹使用 javascript 执行此操作可能会非常具有挑战性,因为您需要将用于加密令牌的秘密传递给 javascript,这在安全性方面显然是灾难性的。所以恕我直言,您将需要服务器端支持来实现这一点。
【讨论】:
正如 Darin 所说,您不能跨域共享 cookie。您正在尝试做的是第三方 cookie 的设计目的。不幸的是,它们的名声很差,以至于大多数浏览器默认阻止第三方 cookie。
您需要某种反向通道(服务器到服务器)通信来共享有关用户的详细信息,例如他们的授权状态。看看这类事物的实际实现,例如 OAuth,看看他们是如何解决这个问题的。
【讨论】: