【问题标题】:What is the best was to share session cookies with third party websites?与第三方网站共享会话 cookie 的最佳方法是什么?
【发布时间】:2011-04-05 05:00:51
【问题描述】:

我想要的是,当一个人已经通过我的网站进行身份验证时,我想将此信息传递给第三方网站。其他网站应使用 JavaScript 验证这一点并允许访问。做这种事情的方法是什么?是通过传递会话 cookie 吗?

【问题讨论】:

    标签: javascript cookies session-cookies


    【解决方案1】:

    您不能跨域传递 cookie。实现 SSO 跨域的一种方法是让 SiteA 和 SiteB 共享允许加密/解密值的公共机密。 AES 是一个很好的算法。因此,如果用户在 SiteA 上通过身份验证,那么您可以通过在请求中传递包含用户名的加密令牌来提供到 SiteB 的链接。因为 SiteB 与 SiteA 共享相同的密钥,所以它能够解密它并获取用户名。一旦有了用户名,它就可以在第二个域上为该用户发出其身份验证 cookie。

    我担心纯粹使用 javascript 执行此操作可能会非常具有挑战性,因为您需要将用于加密令牌的秘密传递给 javascript,这在安全性方面显然是灾难性的。所以恕我直言,您将需要服务器端支持来实现这一点。

    【讨论】:

      【解决方案2】:

      正如 Darin 所说,您不能跨域共享 cookie。您正在尝试做的是第三方 cookie 的设计目的。不幸的是,它们的名声很差,以至于大多数浏览器默认阻止第三方 cookie。

      您需要某种反向通道(服务器到服务器)通信来共享有关用户的详细信息,例如他们的授权状态。看看这类事物的实际实现,例如 OAuth,看看他们是如何解决这个问题的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-02
        • 1970-01-01
        • 2016-12-19
        • 1970-01-01
        • 2021-12-04
        • 1970-01-01
        • 2019-11-18
        相关资源
        最近更新 更多