2015-02-10 3 views
0

Я успешно настроил приложение с использованием Spring Security. Когда пользователи запрашивают защищенные страницы, Spring автоматически перенаправляет этих пользователей на страницу HTTPS.Настройка страниц HTTP и HTTPS-страниц с помощью Spring Security

<http auto-config="true" use-expressions="true" once-per-request="true" > 
    <intercept-url pattern="/login" access="permitAll" requires-channel="https"/> 
    <intercept-url pattern="/my-account" access="isAuthenticated()" requires-channel="https"/> 

    <logout /> 
    <form-login login-page="/login" /> 
    <port-mappings> 
     <port-mapping http="8080" https="8443"/> 
     <port-mapping http="80" https="443"/> 
    </port-mappings> 
</http> 

Но когда пользователи переходят, следующие другие страницы, которые не имеют конфиденциальную информацию по-прежнему используют HTTPS. Я хотел бы, чтобы эти обычные страницы обращались с использованием только HTTP.

Есть ли разумный способ сделать это? Все другие страницы, которые я не настроил как HTTPS-канал, я бы хотел получить, используя только HTTP. Я пытался использовать некоторые подстановочные знаки, но безуспешно.

Дополнительная информация: HTTPS использует больше серверного процессора. У меня много запросов на некоторых страницах, и я бы хотел избежать этой дополнительной стоимости.

+0

Почему бы не использовать HTTPS для всего сайта? См. FireSheep –

+0

Я читал, что он использует больше серверного процессора. У меня много запросов на некоторых страницах, и я бы хотел избежать этой дополнительной стоимости. –

ответ

1

Сделать весь сайт HTTPS. В наши дни изменение производительности минимально, и вы не будете нажимать на своих пользователей, подвергая свои файлы cookie сеансам через HTTP.

https://istlsfastyet.com/

+0

спасибо Нейлу, очень поучительно. –

0

В Spring-Security, вы можете сделать этот путь -

<http auto-config="true" use-expressions="true" once-per-request="true" > 
<intercept-url pattern="/login" access="permitAll" requires-channel="https"/> 
<intercept-url pattern="/my-account" access="isAuthenticated()" requires-channel="https"/> 
<intercept-url pattern="/**" access="permitAll" requires-channel="http"/> 

Все остальные URL, помимо "/ входа в систему" и "/ мой счет" будет подан через HTTP.

В дополнение к этому вы должны установить безопасный флаг для файла cookie. Установив безопасный флаг, браузер предотвратит передачу файла cookie по незашифрованному каналу. https://www.owasp.org/index.php/SecureFlag

+0

Последняя строка не отменяет все остальные конфигурации? –

+0

Последняя строка не отменяет предыдущие конфигурации перехвата-url. Spring Security делает перехват-url-шаблон, совпадающий сверху вниз и для первого найденного совпадения, он применяет настроенный «require-channel». Таким образом, для вышеуказанных строк все шаблоны url (помимо «/ login» и «/ my-account»), каналом будет HTTP. –

Смежные вопросы