PHP单点登录(SSO)生成新的会话ID

时间:2010-05-06 20:46:36

标签: php redirect session single-sign-on

我正在尝试创建单一登录流程。我实现的方法使用在数据库中存储会话数据。

当新用户访问网站(www.example2.com)时,会检查身份验证表。由于这是他们第一次访问该网站,所以没有匹配。

浏览器被撤消到身份验证服务器www.example1.com/authenticate.php?session_id=ABC123,其中ABC123表示在www.example2.com上创建的会话ID。然后在www.example1.com上生成的会话ID使用URL中的参数集存储在会话ID旁边。

然后将用户重定向回www.example2.com并找到会话ID匹配。

这个WAS在FireFox中正常运行但是当我在Chrome中尝试它时,我注意到当浏览器重定向回www.example2.com时生成的会话ID是一个新的会话ID。结果,创建了无限循环。这种行为在FireFox中也没有表现出来。

是什么导致生成新的会话ID?更重要的是,我该怎么做才能阻止它?

提前致谢!

修改
我有一个导致无限循环的逻辑错误。现在,这在FireFox中再次正常工作,但Chrome和Internet Explorer中仍然存在无限循环。

2 个答案:

答案 0 :(得分:0)

会话的整个想法是它只适用于一个域。否则其他域名可能会劫持您的会话。浏览器不应为未为其编写的域提交cookie(包含会话ID)。即,您的www.yourbank.com登录的会话ID不应该被名为www.preatesteallingtheieves.com的网站读取,浏览器将阻止这种情况发生。 (无论您使用什么会话名称。)

SO: 会话ID不在域之间共享,即使您为它们指定了相同的名称。

答案 1 :(得分:-1)

遵循代码的逻辑,我做了一些修改。现在一切似乎都在起作用。只是有点困惑,为什么这不会影响FireFox。

感谢大家的兴趣。