我们有一个用于网上商店的Tomcat服务器,我们需要在用户登录时将用户转移到另一个(安全)服务器。以下是详细说明:
1)我们有两个Tomcat服务器:一个是“常规”(HTTP),另一个是“安全”(HTTPS)
2)用户最初访问常规服务器
3)当他们登录时,我们需要获取他们的登录数据,以及他们当前所在页面(或试图查看)的信息,将其传递给安全服务器并进行实际登录;例如,未登录的用户会看到产品列表,点击“购买”并显示弹出窗口,要求用户登录;用户输入他/她的凭证,这些凭证以及有关他想要购买的产品的信息被传递到安全服务器;安全服务器接收这些,执行登录并向用户显示所请求的产品
怎么可以这样做?请注意以下事项:
1)我们尝试过使用cookies,但我们决定不这样做
2)将会话保持到数据库然后让安全服务器获取它也不是一个选项
还有其他方法吗?我们正在考虑创建一个对象,然后将其作为HTTP POST参数传递,但我不确定如何做到这一点(我已经完成了任务)。
对于它的价值,我们使用的技术是Tomcat服务器,Wicket,Spring,iBatis和MySQL。
提前致谢:)
答案 0 :(得分:2)
如果要在不同的Tomcat实例之间共享会话,可以将它们配置为具有会话复制的群集:http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html
然后,您可以将Apache HTTP Server配置为负载均衡器,确保HTTP请求转到服务器1,HTTPS请求转到服务器2。
但是,您也可以只配置一个Tomcat实例(或N个相同的实例)来处理HTTP和HTTPS,并确保使用标准(web.xml中的...<transport-guarantee>CONFIDENTIAL</transport-guarantee>...
)或特定于框架的配置进行安全访问
答案 1 :(得分:0)
不确定我是否掌握了您想要的内容,但您可以将“弹出窗口”设置为从安全应用程序提供给受保护URL的页面。这将导致身份验证在安全服务器上发生,您可以从那里开始。例如,如果不安全的产品页面位于www.domain.com/browse/id1上,那么“购买”按钮会打开一个弹出窗口,提供secure.domain.com/buy/id1,从而在传输产品时进行身份验证网址上的ID。