经过一段时间的搜索和阅读文档后,我决定问你们。
所以,场景很“简单”:
用户前往https://Domain1.com https://Domain1.com,输入他的凭据,尝试登录。
登录成功后,根据用户类型和数据库中的其他信息,
Domain1 服务器应将用户重定向到另一个 CF 服务器:https://Domain2.com https://Domain2.com.
到目前为止,没有问题,使用 HTTP 301 和 cfheader/cflocation 我将用户重定向到第二台机器,但他必须重复登录过程,这是我们的管理层无法接受的。
是否有任何良好且安全的做法用于将客户端与会话数据一起“传输”到另一台计算机或至少使用相同的凭据自动登录?
你会怎么做?
可能有很多方法可以解决这个问题。以下是一些可能的选择。
处理此问题的“企业”方式是使用某种单点登录 (SSO) 实现(例如 Shibboleth)来处理它。这很复杂,但非常有效且安全。
在重定向用户之前,您可以生成一个存储在某处(服务器范围、数据库)的令牌,以指示用户已登录。然后,当您重定向该用户时,一起发送该令牌 (http://domain2.com/HGF394JFJk58fjJ)。当第二个服务器收到请求时,如果它发现存在令牌,它可以将远程请求 (cfhttp) 发送回第一个服务器以查明该令牌是否有效。如果是,只需将用户登录到第二个站点即可。当然,您必须采取措施以确保令牌无法重复使用/重放。
用户登录站点 1 后,您可以向站点 2 发送远程请求 (cfhttp) 以让用户登录。然后显示一个页面(来自站点 1),该页面具有从站点 2 加载的 iframe,以设置站点的会话 cookie 2. 这不太干净,需要您在重定向到站点 2 之前至少显示站点 1 的一页。我真的不喜欢这个选项,并怀疑它容易出错且脆弱。
就像我说的,可能还有其他选择。有些甚至可能更好(尽管我怀疑比选项 1 更好)。如果您有可用资源,我会选择选项 1。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)