【问题标题】:How to make crossdomain authorization?如何进行跨域授权?
【发布时间】:2012-10-17 08:21:34
【问题描述】:

一台服务器上有 2 个域。如果用户登录一个域,他也必须登录另一个域。 如何在一台服务器上的php中进行跨域授权? 子域解决了,不同的二级域解决不了。

【问题讨论】:

  • 研究 SSO --> 单点登录
  • 这很复杂。首先,您必须具有相同的用户属性,然后您的用户必须登录1个网站并且您必须设置cookie; cookie 必须包含唯一的散列键。您将如何获得共同的用户属性?您要么拥有所有网站的共同数据库,要么使用 API。您必须考虑到用户可能使用多个 Web 浏览器和东西在这里变得很糟糕;您对预先设置的 cookie 失去了控制;如果用户使用 chrome 登录,现在使用 mozilla,您将无法做任何事情;如果 x.com 设置了 cookie,您将无法访问.com 域!
  • stackoverflow 上讨论了类似的问题。有办法做到这一点,但你需要小心劫持会话并将其锁定。
  • 但是如果我们谈论的是重定向,从主网站,如果用户登录,这是另一回事,这是可以做到的;

标签: php session


【解决方案1】:

主要问题是如果您在另一个域中,浏览器不会发送 cookie。

您也不能让浏览器为另一个域写入 cookie。

可以做的是向另一个域发送一个唯一令牌,并在验证后在第二个域上写入一个 cookie。这可以在通过身份验证时完成,使用 iframe 或双重重定向(iframe cookie 被某些浏览器阻止,如 safari)。唯一令牌必须由第二个域验证,然后使其无效(删除),以便其他用户(中间人攻击)不能再次使用它。

【讨论】:

  • 如何从 b.com 域访问 a.com 域设置的 cookie?您可能会在 Mozilla 中看到它,但您无法访问它
  • 你显然不能,这将是一个巨大的安全漏洞。例如,这意味着您可以从 hacksite.com 访问 stackoverflow.com 会话 cookie...相当混乱。
  • 您可以使用 mozilla 查看会话数据,但这对您没有用,因为您已经知道所有数据,因为您编写了它:))
【解决方案2】:

您必须研究CAS 并根据您使用的框架来实现它。例如,在我的 Zend 应用程序中,我会使用 Zend_OpenIdZend_Oauth

【讨论】:

  • 我认为他想要一个自定义登录系统
猜你喜欢
  • 2014-03-10
  • 2016-12-30
  • 2020-09-11
  • 2014-03-18
  • 2011-03-20
  • 2013-03-23
  • 2012-03-22
  • 2016-12-29
  • 1970-01-01
相关资源
最近更新 更多