我有一个小问题。
如何为多个域设置 cookie?
我确实了解安全问题,并且我确信以前已经这样做过。原因是 SSO。
IE。
account.domain.com
将需要设置登录的域:
domain.com、domain1.com、domain2.com。
有没有简单的方法,使用 PHP 和 cookie 或任何替代方法?
我有一个小问题。
如何为多个域设置 cookie?
我确实了解安全问题,并且我确信以前已经这样做过。原因是 SSO。
IE。
account.domain.com
将需要设置登录的域:
domain.com、domain1.com、domain2.com。
有没有简单的方法,使用 PHP 和 cookie 或任何替代方法?
domain.com 绝对没有办法为 domain1.com 设置 cookie。您尝试做的事情只能通过让用户的浏览器向每个域提交请求来解决,然后每个域将设置自己的 cookie。
然后,您需要为每个域提供一种方法来验证用户的身份。有两种方法:
这真的很复杂。我建议你不要自己动手。查看SimpleSAMLPHP以了解我所描述的 PHP 实现。
您正在尝试的事情无法完成。(这是一个浏览器安全问题,而不是 PHP 问题。)
除了使用某种形式的异地身份验证之外,您可以实现的最接近的方法是使 cookie 可以跨子域访问,在这种情况下,您只需使用 PHP 的set_cookie函数的可选“域”参数。
这可以通过一个域充当主机而其他域充当从属来完成。
假设我们有一个域 accounts.domain.com,它是我们的主人。
然后我们得到了我们的奴隶domain.com
,something.com
并且another.com
当您登录 domain.com 时,它实际上是 site accounts.domain.com
,然后您将获得一个带有您浏览器唯一 ID 的 cookie,然后您将被重定向到 domain.com 的登录后登录页面(即。domain.com/logon?check=true&unique-id=<browser unique id>&request-id=<unique request ID>
)。登陆页面将联系accounts.domain.com
,并使用浏览器 ID 进行查询。如果交易没问题,那么您将从domain.com
.
接下来,在每个域(domain.com
和something.com
)another.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>
)上再次被重定向,从这一点开始,它与登录的部分相同。我们无缝地漫游到另一个域(用户不知道它,因为浏览器通常不会显示重定向的页面,直到它通过标头发送(服务器)/接收(浏览器)部分)。
如果实际上没有活动登录,该站点会将这个“否定登录”保存到会话中,并且不再尝试检查登录(直到我们尝试登录或加载另一个域)。
我认为此解决方案将满足您的需求:“ PHP 的简单单点登录”