2009-08-25 3 views
7

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

Существуют ли какие-либо изменения кода, необходимые для сохранения сеанса через HTTPS и HTTP?

ответ

11

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

Спасибо за информацию, я попробую! – Keshav

+0

Я попытался добавить это в свой web.xml, но Tomcat не перенаправляет, он просто терпит неудачу! Я делаю что-то неправильно? Я использую Tomcat 5.5.23. – ep4169

+0

Я пробовал это в своем web.xml приложения, но Tomcat не перенаправляет; он просто ничего не нагружает. Я делаю что-то неправильно? – ep4169

2

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

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

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

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

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