【问题标题】:Can Tomcat provide seperate (or HTTPS only) sessions for HTTPS requests?Tomcat 能否为 HTTPS 请求提供单独的(或仅 HTTPS)会话?
【发布时间】:2010-03-23 15:14:54
【问题描述】:

我有一个包含安全 (SSL) 和非安全页面的 Web 应用程序。

用户可以登录网站,并且必须在 SSL 和非 SSL 区域都显示为已登录。

(注意。SSL 不是通过 Tomcat 实现的,而是通过位于 Tomcat 前面的 Apache HTTPD 服务器实现的 - 所以 Tomcat 没有 SSL 配置。)

登录状态当前通过 servlet 会话(使用 Tomcat 的 vanilla 会话管理)维护。

这种方法的明显问题是 JSESSIONID cookie 是通过 HTTP 和 HTTPS 连接传输的,这意味着有可能拦截它并劫持会话。

在不滚动我们自己的会话管理的情况下,是否有任何解决方案(即 Tomcat 是否适合这种情况)?

我准备实现我们自己的会话管理,但不想重新发明可能已经支持的东西。

【问题讨论】:

    标签: java session tomcat https


    【解决方案1】:

    您说 SSL 是在 Apache 服务器上实现的,而不是传递给 Tomcat,所以 Tomcat 将整个旅程视为 HTTP?如果是这样,Tomcat 将不会创建单独的 JSESSIONID,因为它不知道 HTTPS。

    您可以检查 request.getUserPrincipal() 以查看用户是否已登录。

    【讨论】:

    • 好点,虽然标头已转发,因此存在 HTTPS 标志 - 但是 Tomcat 可能不考虑这一点。感谢您对用户主体的提醒(使用本土身份验证方法花费了太长时间:)
    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 2012-06-03
    • 2023-03-30
    • 2019-08-24
    • 1970-01-01
    • 2018-08-07
    • 2013-04-03
    • 2011-12-28
    相关资源
    最近更新 更多