Используйте HTTPS только для определенных страниц в веб-приложении на основе сервлетов.

StackOverflow https://stackoverflow.com/questions/1330187

Вопрос

У меня есть веб-приложение на основе сервлетов, работающее на сервере Tomcat 6.Схема URL — HTTPS.Весь сайт в настоящее время обслуживается по протоколу HTTPS.Но что мне действительно хотелось бы сделать, так это настроить HTTPS только для определенных операций, таких как покупка и вход в систему.Есть ли какая-либо конфигурация в Tomcat, которая поможет мне легко это сделать?

Требуются ли какие-либо изменения кода для сохранения сеанса через HTTPS и HTTP?

Это было полезно?

Решение

Действительно, в идеале это настраивается в файле 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>

Другие советы

Вам просто нужно настроить HTTP-коннектор, и все ваши сервлеты также будут доступны по HTTP.

Для операций, требующих HTTPS, вам необходимо обеспечить это самостоятельно следующим образом:

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

В нашем случае URL-адрес для входа может быть введен пользователем, поэтому мы перенаправляем пользователя на страницу HTTPS, если введен URL-адрес HTTP.

Если вы говорите о сеансах сервлетов (JSESSIONID), у вас не должно возникнуть проблем с разделением сеансов между HTTP и HTTPS, поскольку Tomcat не добавляет флаг «безопасности» в файлы cookie.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top