登录后,重定向和会话数据传输到另一个服务器/域

zar*_*jar 4 coldfusion redirect http http-headers

经过一段时间的搜索和阅读文档,我决定问你们.

所以,场景是"简单的":

用户访问https://Domain1.com,输入他的凭据,尝试登录.

成功登录后,根据用户类型和来自DB的其他信息,Domain1服务器应将用户重定向到https://Domain2.com上的另一个CF服务器.

到目前为止,没有问题,使用HTTP 301和cfheader/cflocation我将用户重定向到第二台机器,但他必须重复登录程序,这是我们的管理层无法接受的.

有没有任何好的和安全的做法,用于将客户端与会话数据"转移"到另一台机器或至少自动使用相同的凭据登录?

你怎么做的?

Jas*_*ean 10

你可能有很多方法可以解决这个问题.这里有一些可能的选择.

  1. 处理此问题的"企业"方法是使用某种单点登录(SSO)实现(如Shibboleth)来处理它.这很复杂,但非常有效和安全.

  2. 在重定向用户之前,您可以生成一个存储在某处(服务器范围,DB)的令牌,该令牌表示用户已登录.然后,当您重定向该用户时,请发送该令牌(http://domain2.com/HGF394JFJk58fjJ).当第二个服务器收到请求时,如果它看到令牌存在,它可以将远程请求(cfhttp)发送回第一个服务器,以查明它是否是有效令牌.如果是,只需将用户登录到第二个站点.当然,您必须做一些事情以确保令牌无法重复使用/重播.

  3. 用户登录到站点1后,您可以向站点2发送远程请求(cfhttp)以将用户登录.然后显示一个页面(来自站点1),该站点具有从站点2加载的iframe以设置站点的会话cookie 2.这不是很干净,并且要求您在重定向到站点2之前显示来自站点1的至少一个页面.我真的不喜欢这个选项并且怀疑它会容易出错且容易出错.

就像我说的,可能还有其他选择.有些甚至可能更好(尽管我怀疑比选项1更好).如果您有可用资源,我会选择选项1.