Java 多个浏览器实例是否在同一会话中运行

Java 多个浏览器实例是否在同一会话中运行,java,session,servlets,cookies,Java,Session,Servlets,Cookies,我需要将单独的浏览器会话整合到一个浏览器中。请仔细阅读,我知道来自同一浏览器实例的多个选项卡或窗口将自动执行此操作。但是,我有相同浏览器的不同实例,它们共享相同的主席会话池。这意味着如果我强制执行会话cookie持久性选项,任务将自动得到解决。但是,支持该选项的应用程序服务器并不多。有些服务器(如WebSphere)提供了一个选项“记住我”,但是它设置了一个信任有限的持久cookie,因此可以提示用户输入登录信息。所以我需要一些想法。我目前可以看到一种方法 当用户从一个实例签名时,会建立一些持久

我需要将单独的浏览器会话整合到一个浏览器中。请仔细阅读,我知道来自同一浏览器实例的多个选项卡或窗口将自动执行此操作。但是,我有相同浏览器的不同实例,它们共享相同的主席会话池。这意味着如果我强制执行会话cookie持久性选项,任务将自动得到解决。但是,支持该选项的应用程序服务器并不多。有些服务器(如WebSphere)提供了一个选项“记住我”,但是它设置了一个信任有限的持久cookie,因此可以提示用户输入登录信息。所以我需要一些想法。我目前可以看到一种方法

  • 当用户从一个实例签名时,会建立一些持久cookie,并保留一些令牌
  • 该令牌是某些保存会话对象的单例映射中的密钥
  • 任何请求会话但未获取会话的servlet代码都可以检查cookie并使用令牌从会话映射获取会话
  • 会话侦听器在删除时从会话映射中删除会话
  • 我需要你的意见

  • 可能的安全问题
  • 可能的资源泄漏
  • 集群中解决方案的扩展 谢谢你的任何想法,但请不要试图说服我我没有这个用例。如果您想知道用例,请私下告诉我
  • 如果使用服务器上的密钥和一些不可重复的会话标识符对用户会话的cookie数据进行加密,那么您只需担心“中间人”,这可以通过ssl缓解

  • 我不认为这是一个问题,因为您说过您的服务器会话有一个滑动到期,并且您的服务器应该在到期时回收资源

  • 除非您使用某些备份存储来支持粘性会话持久性,否则在故障切换过程中,您的用户会话将丢失


  • 另外,请记住,您的身份验证cookie仅适用于发布它的域。

    第(1)点需要澄清。我认为在某些持久性持有者中,会话Cookie值的加密不会在传输中增加任何额外的安全性,因为常规会话Cookie同样脆弱。加密并不能使它更安全,即使它是从硬盘上被盗的,除非加密算法使用一些滚动密钥,从而限制了应用被盗密钥的时间。但你给了我一些好主意。这取决于你在饼干里储存了什么。使用“记住我”类型的功能通常包含帐户标识信息,并且cookie将保留在您的客户机上,直到他们清除缓存为止。使用安全存储在服务器上的密钥,用于创建散列的密钥对于每个会话甚至请求(如果您想走得更远)都必须是唯一的。如果您的密钥仅适用于会话,则必须为每个用户和每个会话破解密码。这在静态上是不可能的。