Jetty/Tomcat 加密的基于 Cookie 的会话存储?

Ruby on Rails支持基于cookie的签名会话已经有一段时间了,从那时起,一些加密的实现如雨后春笋般涌现。PythonPHP也有实现。

对于Java servlet容器Jetty或Tomcat来说,是否存在这样的野兽?

与基于RDBMS的会话相比,我们已经在集群环境中使用PHP实现获得了显着的性能提升,我有兴趣尝试与我们的Java应用程序之一(目前使用Jetty 7)类似的方法。

我知道实现此目标的其他方法(memcached同步内存中缓存),但我相信,对于我们的特定需求,这种存储方法的局限性(输出前的会话完成,4K cookie大小限制后的无效存储,对超机密服务器端密钥的依赖)被此特定应用程序的更简单的部署环境所抵消。

如果一个实现不存在,有没有人知道为什么它不会存在?(例如,Java会话通常大于4K,因此不适合这种存储方法)


答案 1

我们已经实现了 Session-In-Cookie,并在 Tomcat 集群中成功使用它,以允许在 20 个节点之间共享会话,从而实现零中断部署。我刚刚在这里写了一个关于实现的两部分系列的第一部分:http://blog.shinetech.com/2012/12/18/simple-session-sharing-in-tomcat-cluster-using-the-session-in-cookie-pattern/。这部分涉及基本实现,安全方面将在第二部分中介绍。


答案 2

我不知道这两个容器中有什么东西可以将HttpSession序列化为cookie。您可以通过实现一个过滤器来实现这种事情,该过滤器将能够在对Web客户端的响应上将会话状态序列化为cookie,并在请求上反序列化它。您仍然受到任何客户端 Cookie 限制的约束,您应该仔细考虑您存储客户端的状态的安全隐患和/或您对提供 Cookie 的客户端的信任程度。


推荐