2009-09-03 117 views
3

我目前正在使用2台Web服务器,一台Coldfusion和另一台PHP。从服务器到服务器的持久登录信息

眼下,ColdFusion服务器是用户登录访问受限制的数据我的主服务器。 但是,我也已经开始使用PHP服务器,并希望透明用户访问该服务器上的特定页面 - 该服务器还需要登录信息。

我不希望用户登录两次。

有没有办法做到这一点?

THX

UPDATE:在Intranet环境中工作,所以我不能使用任何公开的解决方案。

UPDATE:原因我问这个是因为我们是从MSQL/ColdFusion的环境(初始服务器)移动到PHP/ORACLE(新服务器)。所以我也有2个用户表(尽管它们大多包含相同的信息)。 我试图淡化使用我们的初始服务器来支持我们的新服务器对用户透明,因此我必须暂时并行工作。

回答

4

大多数单点登录解决方案的工作有点像这样...

  1. 主系统进行身份验证使用
  2. 用户选择启动需要移动到系统2
  3. 主系统对用户进行认证与系统2在后台
  4. 系统2向主系统提供一个随机,长期和一次性令牌
  5. 主系统用令牌将用户重定向到系统2
  6. 系统2个检查令牌(以及其他因素,如IP地址)来验证会话
  7. 系统令牌2和处置,以确保它不能被重播

你会希望确保传输通道具有一定的安全性,尤其是在主系统和系统2正在相互通话的情况下。你会希望这是一个安全的交通工具。

+0

在当前的设置,登录表也不同请问这仍然工作 – ddallala 2009-09-03 14:37:01

+0

你会需要链接的一些知识 - ?即外部用户ID – Fenton 2009-09-04 06:55:21

3

存储在数据库中的会话,并在两个应用程序之间共享。

0

如何实现一个OpenID的解决方案,就像在计算器上的一个明显?

+0

哇。我投这个想法。 – vpram86 2009-09-03 13:52:22

+0

雅那将是巨大的,但是,我在Intranet环境中工作,因此所有的解决方案都必须本地托管。 :( – ddallala 2009-09-03 13:52:47

+0

使用OpenID,你还是要在每个站点上输入您的用户名和密码,不是吗?我可能是错的。 – Fenton 2009-09-03 13:54:15

1

如果您在Intranet上,你实际上可以嗅出从他们登录到使用PHP网络的PC用户的网络用户名。这假设:

  1. 您正在使用IIS托管您的PHP应用程序。
  2. 您的用户正在使用Windows。

查看“2.2启用支持检测用户名”部分here

之后,所有你需要做的是调查,如果同样是可能从ColdFusion和您有一个基于网络的用户名的SSO解决方案的基础。

+0

你可以做同样的ColdFusion中的CGI变量的作用域的cfdump。应该给所有想要的信息。 – ale 2009-09-03 16:55:53

0

您可以受益于通过Flash或Flex在客户机上滴下共享对象。然后可以从服务器上的ColdFusion/PHP/Python中读取此对象,否则这些服务器之间没有彼此连接或访问公用数据库。

这里是从Adobe文档

一个简单的例子,保持本地永久性。这是 使用共享对象的最简单方式,并且不需要Flash 媒体服务器。例如,可以 调用SharedObject.getLocal()在应用程序中创建 共享对象中,与存储器的计算器这样 。当 用户关闭计算器时,Flash播放器 保存在用户的计算机上的共享 对象中的最后一个值。 计算器下一次运行时,它包含之前的值 。或者,如果设置 共享对象的属性设置为null 前的计算器应用程序是 封闭,应用 运行时,它会打开没有任何价值的下一次。 保持本地 持久性的另一个示例是跟踪 复杂网站的偏好或其他数据,例如 用户在新闻 网站上阅读的文章的记录。通过跟踪此信息,您可以使用 显示 与 新的未读文章不同的文章。在用户计算机 上存储此 信息可减少服务器负载。

完全信息:http://livedocs.adobe.com/flex/3/langref/flash/net/SharedObject.html

1

这里是我做了什么,在经营自己的游戏服务器,有用户在SQL Server上,并在MySQL,并希望他们两个整合。

  1. 我确信如果用户是在1系统上创建的,也是在另一个系统上创建的。

  2. 所以,你可以在这两个应用程序修改的代码,如果它是在这里创建自动创建在其他系统中的用户。

  3. 取决于如果两个服务器共享一个域,你可以做跨域会话或饼干......可是我最好的猜测是存储和retreive数据...

或..

  1. 一个人登录/注册记录自己当前的IP地址,这两个服务器上,然后检查,如果这个人2-5分钟内被对方服务器上,如果是的话,可以使用IP地址来识别它们。 ...

  2. 这个系统很棘手,因为时间安排很重要,所以你不要在安全性方面留下一个巨大的漏洞......但就短期而言,这是最简单的解决方案,在我看来。

祝你好运。