我有一个包含安全(SSL)和非安全页面的Web应用程序。
用户可以登录该站点,并且必须在SSL和非SSL区域中显示为已登录。
(注意:SSL不是通过Tomcat实现的,而是通过位于Tomcat前面的Apache HTTPD服务器实现的 - 所以Tomcat没有SSL配置。)
登录状态目前通过servlet会话维护(使用Tomcat的vanilla会话管理)。
这种方法的一个明显问题是JSESSIONID cookie是通过HTTP和HTTPS连接传输的,这意味着它有可能拦截它并劫持会话。
如果没有滚动我们自己的会话管理,是否有任何解决方案(即Tomcat是否适应这种情况)?
我准备实施自己的会话管理,但不想重新发明可能已经支持的内容。
答案 0 :(得分:3)
你说SSL是在Apache服务器上实现的,而不是传递给Tomcat,所以Tomcat将整个旅程视为HTTP?如果是这样,Tomcat将不会创建单独的JSESSIONID,因为它不知道HTTPS。
您可以检查request.getUserPrincipal()以查看用户是否已登录。