【问题标题】:Cross domain cookies跨域cookies
【发布时间】:2010-11-08 05:16:29
【问题描述】:

我有一个小问题。

如何为多个域设置 cookie?

我确实了解安全问题,并且我确信以前已经这样做过。原因是 SSO。

即。

account.domain.com 需要设置登录域:

domain.com, domain1.com, domain2.com.

是否有任何简单的方法,使用 PHP 和 cookie 或任何替代方法?

【问题讨论】:

标签: php authentication cookies single-sign-on


【解决方案1】:

我认为这个解决方案会满足您的需求:“Simple Single Sign-On for PHP

【讨论】:

    【解决方案2】:

    您正在尝试的事情无法完成。 (这是浏览器安全问题,而不是 PHP 问题。)

    除了使用某种形式的异地身份验证之外,您可以实现的最接近的方法是使 cookie 可以跨子域访问,在这种情况下,您只需使用 PHP 的 set_cookie 函数的可选“域”参数。

    【讨论】:

      【解决方案3】:

      domain.com 绝对没有办法为 domain1.com 设置 cookie。您试图做的事情只能通过让用户的浏览器向每个域提交请求来解决,然后每个域都会设置自己的 cookie。

      那么你需要一种方法来为每个域验证用户的身份。有两种方法:

      1. 反向通道 - 站点直接相互联系以确定用户是否已登录。
      2. 在 GET 或 POST 中传递令牌 - 当用户的浏览器被重定向到其他站点时,会传递一个包含身份和会话状态的数字签名参数。

      这真的很复杂。我建议你不要自己动手。查看SimpleSAMLPHP 了解我所描述的 PHP 实现。

      【讨论】:

      • 这是另一种方式,让 domain.com 与 domain1.com 连接并获取令牌,然后将该令牌传递到 JS 调用的标头中或作为单独的字段,然后 domain1.com 应检查该令牌并作出相应的回应。这有意义吗?
      【解决方案4】:

      这可以通过一个域充当主机而其他域充当从属来完成。

      假设我们有一个域 accounts.domain.com,它是我们的主人。

      那么我们就有了我们的奴隶domain.comsomething.comanother.com

      当您登录 domain.com 时,它实际上是站点 accounts.domain.com,然后您将获得一个带有您浏览器唯一 ID 的 cookie,然后您将被重定向到 domain.com 的 post-登录登陆页面(即domain.com/logon?check=true&unique-id=<browser unique id>&request-id=<unique request ID>)。登陆页面将联系accounts.domain.com,并使用浏览器ID进行查询。如果交易没问题,那么您将从domain.com 获得登录cookie。

      接下来,将在每个域(domain.comsomething.comanother.com)上初始重定向到 accounts.domain.com/roaming-check?return-url=<URL the redirect was initiated from>。因为我们要回家了(我们已经登录accounts.domain.com),所以我们将再次被重定向到我们的登录页面(<domain name>.com/logon?check=true&unique-id=<browser unique id>&request-id=<unique request ID>),从这一点开始,它与登录的部分相同。我们无缝漫游到另一个域(用户不知道它,因为浏览器通常不会显示重定向页面,直到它通过标头发送(服务器)/接收(浏览器)部分)。

      如果实际上没有活动登录,该站点会将这个“否定登录”保存到会话中,并且不再尝试检查登录(直到我们尝试登录或加载另一个域)。

      【讨论】:

        猜你喜欢
        • 2012-09-30
        • 2012-01-14
        • 2012-10-08
        • 1970-01-01
        • 2019-11-16
        • 2011-06-19
        • 2017-09-16
        • 2013-01-02
        • 2013-09-11
        相关资源
        最近更新 更多