Как реализовать страницу входа HTTPS в веб-приложение?
Я хочу создать безопасный механизм входа/выхода. Я начал читать следующие статьи, чтобы получить представление о том, что нужно учитывать:
В этих статьях есть несколько хороших моментов, но я думал об использовании HTTPS аналогично странице входа в систему Yahoo. Вы знаете... вы набираете http://mail.yahoo.com, и вы перенаправляетесь на страницу HTTPS, например ** https://**login.yahoo. com/config/login, где вы вставляете свое имя пользователя и пароль, и после проверки ваших учетных данных вы перенаправляетесь обратно на страницу HTTP сгенерированным cookie session_id
, и все сообщения оттуда находятся на HTTP с помощью файла cookie.
Что мне нужно для реализации этого поведения?
Я хочу сделать это для двух веб-приложений Java (один с фреймворком Spring и один с Struts 1), но не знаю точно, как интегрировать эту часть HTTPS в приложение (раньше я никогда не работал с HTTPS).
Ответы
Ответ 1
Прежде всего, вам нужно включить SSL для своего сервера. Для Tomcat вам нужно создать хранилище ключей openSSL и добавить следующий разъем в server.xml:
<Connector port="8443" scheme="https" secure="true" SSLEnabled="true"
keystoreFile="mykeystore" sslProtocol="TLS"
keystorePass="keystore password" />
Чтобы интегрировать SSL в ваше приложение, я рекомендую Spring Безопасность. Он предлагает именно то, что вы хотите (вход через HTTPS, затем перенаправление на HTTP). Все, что вам нужно сделать для его реализации, - установить для forceHTTPS значение true:
<bean id="authenticationProcessingFilterEntryPoint"
class="org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint">
<property name="loginFormUrl" value="/pages/login.jsp" />
<property name="forceHttps" value="true"/>
</bean>
Конечно, безопасность Spring и Spring имеет довольно крутую кривую обучения, но она того стоит. Сделайте это один раз, а затем вы можете применить его к новым приложениям менее чем за час. Вы можете использовать Spring Security в приложениях Spring и Struts.
Spring Безопасность была безопасностью Acegi. Это статья, которая поможет вам начать работу.
Ответ 2
Не уверен в каких-либо спецификациях Java или spring, но в целом:
1) Установите SSL-сертификат на свой сервер.
2) Вперед или ссылку на абсолютный URL (с https://в начале) при переходе на страницу входа
3) Перейдите к абсолютному URL (с помощью http://) после успешной проверки подлинности.
4) Включите проверку кода страницы входа, чтобы принимать только соединения https.
Конечно, могут быть специфические для каркаса способы перенаправления http/https, не прибегая к прямому указанию полного URL-адреса.
Ответ 3
@see Acegi (spring безопасность)
Я думаю, что он предоставляет все необходимые компоненты. Например, он поддерживает вход через https. Существует хороший reference. Как получить https-логин, вы можете читать здесь. Я думаю, вы должны прочитать все.
Ответ 4
Я бы посоветовал исследовать какое-то одно решение для входа. Быстрый поиск в Google дает JOSSO, Открыть SSO и CAS, среди прочих, Раньше я работал с CAS раньше и имел некоторый положительный опыт. Spring У безопасности также есть встроенная поддержка для работы с CAS.
Ответ 5
Загрузите защищенные страницы a script, чтобы проверить токен.
вверху вашего script:
if(!getSecurityToken()) // 1
redirect(login_page)
if(!checkToken(token)) // 2
redirect(login_page)
Страница входа в систему должна установить защищенный токен и создать сеанс, который затем будет передан в запросе. Сервер отслеживает, какой сеанс принадлежит этому токену. Для реализации сервера вы должны реализовать для своих скриптов метод checkToken. Маркер должен быть сохранен в файлах cookie или каким-либо образом сохранен на странице (для последующих запросов).
Когда запрос поступает на сервер, он должен содержать токен, иначе произойдет переадресация (1).
Когда истекает срок действия пользовательского сеанса (путем выхода из системы или таймаута), сопоставление на сервере больше не будет (идентификатор сеанса с идентификатором токена), и поэтому любые новые запросы с токеном будут недействительными и вызовут перенаправление (2).
Ответ 6
У этого сообщения есть интересное решение:
http://forum.springsource.org/archive/index.php/t-65651.html
Парень использовал фильтр, чтобы поддерживать сеанс во время переключения (https - http)
Это сработало для меня!