将客户端会话从一个服务器转移到另一个

时间:2014-10-11 04:38:22

标签: php session authentication

我有一个用户使用PHP应用程序登录主服务器,该应用程序有多种用途。我希望在一个完全独立的Web服务器上有一个完全独立的应用程序和一个完全独立的数据库,但我不希望用户需要单独登录,而是使用在主服务器上执行的相同的经过身份验证的会话把它带走,基本上把它们转移到另一台服务器上。行业中将登录用户从一台服务器转移到另一台服务器而不再登录的最佳做法是什么?

我想过加密一个只能由两台服务器上的脚本加密/解密的URL,这些服务器共享一个秘密加密密钥。

我想让源服务器向目标服务器发送一条秘密消息,要求提供临时登录密钥,然后将其附加到用户被发送到的目标服务器的URL,并在密钥到达时立即使密钥无效。源服务器是应该通过https API还是通过ssh与目标服务器通信?

我正在为此流程寻找行业最佳实践的一些指导。

1 个答案:

答案 0 :(得分:1)

我通常使用的技术(正确或错误)是在数据库中存储临时哈希,然后将包含该哈希的请求发送到目标服务器以及用户的独特内容,通常是您的auto_increment pk。目标服务器将根据数据库中的内容检查id和散列,并确保在请求时有待处理的单个签名。然后,目标服务器创建它需要的任何会话并处理临时哈希。

这是相当安全的,因为以这种方式劫持某人的会话将要求他们在单点登录发生的确切时刻猜测id和hash。通过存储状态转移日期并在30秒左右之后使其无效,即使发生这种情况的极小机会也可以减轻。