Php 单点登录到站点

Php 单点登录到站点,php,javascript,jquery,curl,single-sign-on,Php,Javascript,Jquery,Curl,Single Sign On,我需要单点登录的帮助。我有一个siteA.com需要登录凭据,一旦你进入siteA.com,你可以做很多事情,其中之一就是访问另一个应用程序siteB.com。如果您单击该选项转到另一个应用程序,另一个应用程序也有一个登录屏幕,其凭据与siteA.com的凭据相同,因此siteA.com和siteB.com都有自己的具有相同凭据的登录屏幕 我正在尝试使其成为一个单一登录。我是否可以远程登录或将凭据从siteA.com传递到siteB.com 我对以下方面感兴趣: 解决了完全相同的问题(实际上也适

我需要单点登录的帮助。我有一个siteA.com需要登录凭据,一旦你进入siteA.com,你可以做很多事情,其中之一就是访问另一个应用程序siteB.com。如果您单击该选项转到另一个应用程序,另一个应用程序也有一个登录屏幕,其凭据与siteA.com的凭据相同,因此siteA.com和siteB.com都有自己的具有相同凭据的登录屏幕

我正在尝试使其成为一个单一登录。我是否可以远程登录或将凭据从siteA.com传递到siteB.com

我对以下方面感兴趣: 解决了完全相同的问题(实际上也适用于4个域)。我提出的唯一解决方案是,在“成功登录页面”中包含3个隐藏的iFrame,这些iFrame只需加载www.domain1.com/register_session.php、www.domain2.com/register_session.php等等

作为register_session.php的参数,我使用包含会话ID的“sid”:

session_id($_GET['sid']);
session_start();
这实际上是为了让所有这些域上的会话保持活动状态,但对于cookie的情况也是如此

我认为这可能会起作用,但问题是如果提供了凭据,我如何让脚本登录到siteB.com


我做了一些什么样的工作…我复制了siteB.com的html,并将其添加到隐藏在siteA.com中,并在siteA.com上进行了双重发布,一个发布到siteA.com的登录名,另一个发布到siteB.com的登录名。这只有在用户最近登录到siteB.com时才有效,我认为登录到siteB.com会设置一个cookie来控制访问,这就是为什么使用双贴可以愚弄登录系统,并且只要提供正确的凭据,它就会成功抓取登录cookie,允许您登录。

将用户信息存储在cookie中(例如数据库中的用户id),然后在登录页面上查找该cookie。如果它存在并且是有效用户,请继续并让他们登录

创建cookie时,您应该能够将其域设置为siteB.com的域,以便siteB.com可以看到它。只需为需要能够读取该cookie的每个域创建一个cookie,并在每个cookie上设置可接受的过期设置,以便它们在会话结束时或x天后过期


根据您需要的安全程度,您可能需要采取某种保护措施,以防止有人简单地创建自己的cookie自由进入(如加密)

我曾经不得不解决类似的问题。我最后做的是在从SiteA到SiteB的任何链接[或表单]的URL查询字符串中添加一个哈希,反之亦然。我使用数据库中用户ID的MD5散列作为值。在这两个站点上,如果$\u GET中存在该散列,则使用搜索“MD5(user\u id)=?”登录用户,而不是按用户名和密码搜索


编辑:注意,这不是一个非常安全的解决方案-它恰好适合我想要实现的目标。请记住安全。在我上面的帖子中,攻击者可能会确定令牌是整数的MD5散列,然后开始修补它。

你有没有研究过OpenID,或者你是否严格想要自己的?我想要我自己的prefrable php,注意:目的是允许所有登录到siteA.com的用户能够访问siteB.com,而无需重新输入其凭据。OpenID看起来您必须连接您的凭证所属的帐户。我不会要求我的用户注册OpenID,所以我想自己做一个。是的,像OpenID这样的东西(实际上是我在这个网站上使用的东西)对于那些天生具有社交性和/或面向那些花大量时间在线和各种在线服务的人的应用程序来说是非常好的(即,已经拥有或听说过OpenID并对其感到满意的人)。但是,如果这听起来不像你的用户群,那么你可能会更适合自己。我无法执行siteB.com的登录,甚至无法修改siteB.com的登录设置,我必须以某种方式远程向siteB.com提供凭据和登录siteB.com如何登录?表单POST/GET?ajax请求?如果你如果您无法直接访问siteB.com的后端,您将无法完成它。听起来您几乎是在尝试创建一个看起来像其他站点的站点,以便人们可以使用它登录,从而窃取他们的凭据。哈哈哈,不,我在公司环境中工作,siteB是基础架构团队的应用程序ion和siteA.com是我的应用程序。登录名是LDAP,因此它是所有用户的1个登录名,这就是我尝试SSO的原因,因此我的应用程序中的用户不需要再次输入login.Understand。如果您要从siteA.com获得您的身份验证以继续到siteB.com,您需要知道siteB.com身份验证和会话是如何工作的。更多信息很可能它使用会话变量,因此您只需找到一种方法来模仿或传递会话变量。