【发布时间】:2023-04-04 06:05:01
【问题描述】:
我们有一个网店的Tomcat服务器,当他/她登录时,我们需要将用户转移到另一个(安全的)服务器。这里有一个详细的解释:
1) 我们有两台 Tomcat 服务器:一台“常规”(HTTP) 和一台安全 (HTTPS)
2) 用户最初访问常规服务器
3) 当他们登录时,我们需要获取他们的登录数据,以及有关他们当前(或试图查看)的页面的信息,将其传递给安全服务器并进行实际登录;例如,未登录的用户看到产品列表,单击“购买”并显示一个弹出窗口,要求用户登录;用户输入他/她的凭据,这些凭据以及有关他想购买的产品的信息被传递到安全服务器;安全服务器接收这些信息,执行登录并向用户显示请求的产品
如何做到这一点?请注意以下几点:
1) 我们尝试过使用 cookie,但我们决定不这样做
2) 将会话持久化到数据库,然后让安全服务器获取它也不是一种选择
还有其他方法吗?我们正在考虑创建一个对象,然后将其作为 HTTP POST 参数传递,但我不确定如何做到这一点(我被赋予了完成它的任务)。
不管怎样,我们使用的技术是 Tomcat 服务器、Wicket、Spring、iBatis 和 MySQL。
提前致谢:)
【问题讨论】:
-
我能问一下您为什么决定不使用 cookie 吗?我访问过的每个需要跨多个 Web 服务器跟踪用户会话的站点都使用了 cookie。您为用户设置了一个具有唯一 id 的 cookie,如果 cookie 存在,请在数据库中查找您的用户会话。你的第二个音符会杀死哪个。
-
问题出在第二个注释中。我们不想使用数据库,所以我们必须保存用户的用户名、密码和他/她在 cookie 中点击的信息(或更多)。将用户名和密码保存在 cookie 中会带来安全风险……除非可以通过某种方式保护它们?
-
不要将用户名密码保存在 cookie 中。在您的数据库中与用户的 IP 地址和用户帐户相关联的 cookie 中放置一个唯一的会话 ID。还要让 cookie 在他的浏览器会话中过期。
-
感谢您的帮助,但我不能这样做。我们没有会话服务器,我们也不想将会话保留在应用程序使用的 SQL 服务器中。而且,由于我无法将用户名和密码保存在 cookie 中,我必须告诉非安全服务器创建一个包含所有信息的对象,然后将其传递给安全服务器。如果您对我如何做到这一点有任何想法,我将非常感激:)