7

我有一个在 Tomcat 6 服务器上运行的基于 servlet 的 webapp。URL 方案是 HTTPS。整个站点当前都在 HTTPS 上提供服务。但我真正想做的只是为某些操作(如购买和登录)设置 HTTPS。Tomcat中是否有任何配置可以帮助我轻松做到这一点?

跨 HTTPS 和 HTTP 保持会话是否需要任何代码更改?

4

2 回答 2

11

实际上,理想情况下,这是在您的 Web 应用程序的 web.xml 文件中配置的。您只需将某些应该安全的 URL<security-constraint><web-resource-collection>指定为 ,并将 HTTPS 要求指定<transport-guarantee>CONFIDENTIAL. 容器将透明地管理重定向。简单的。

<security-constraint>
  <web-resource-collection>
     <web-resource-name>My Secure Stuff</web-resource-name>
     <url-pattern>/some/secure/stuff/*</url-pattern>
     <url-pattern>/other/secure/stuff/*</url-pattern>
     ...
  </web-resource-collection>
  <user-data-constraint>
     <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>
</security-constraint>
于 2009-09-16T16:10:39.113 回答
2

您只需要设置一个 HTTP 连接器,您的所有 servlet 也将在 HTTP 上可用。

对于需要 HTTPS 的操作,您需要像这样自己强制执行,

if (!request.isSecure()) {
    response.sendError(HttpServletResponse.SC_FORBIDDEN);
    return;
}

在我们的例子中,登录 URL 可能由用户输入,因此如果输入了 HTTP URL,我们会将用户重定向到 HTTPS 页面。

如果您谈论的是 Servlet 会话 (JSESSIONID),那么在 HTTP 和 HTTPS 之间共享会话应该没有任何问题,因为 Tomcat 不会在 cookie 中添加“安全”标志。

于 2009-08-25T19:44:03.957 回答