Как автоматически перенаправить http на https в веб-приложение Java?
View more Tutorials:
Hyper Text Transfer Protocol Secure (HTTPS) это безопасная версия HTTP (протокол (protocol) передающий данные между вашим браузером и вебсайтом). 'S' в конце HTTPS это сокращенное 'Secure' (Безопасный). Это означает все коммуникации между браузером и вебсайтом закодированы (encrypted). HTTPS обычно используется для защиты онлайн транзакций с высокой конфиденциальностью, такие как онлайн банк или онлайн покупики.
На данный момент HTTPS рекомендуется для использования. Вебсайты, исопльзующие HTTPS так же получают более высокие приоритеты в поисковике Google.

Если у вас есть вебсайт, который работает с протоколом HTTP, допустим вы успешно установили HTTPS для вашего вебсайта. Но страницы (page), которые найдены пользователем в Google все еще являются ссылками, использующими протокол HTTP, поэтому вам нужно что-то сделать, чтобы когда пользователь зашел по данной ссылке, она автоматически редиректирует (redirect) на HTTPS.
- http://example.com/somepage ==> https://example.com/somepage
Для приложений Java Web автоматический редирект http на https довольно прост. Вам нужны некоторые конфигурации в файле web.xml:
web.xml
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>My Web App</display-name> <!-- .... --> <security-constraint> <web-resource-collection> <web-resource-name>SessionTest</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> <!-- .... --> </web-app>
Упаковать и развернуть еще раз (redeloy)ваше приложение на Web Server. И все!
Применчание: Если ваше приложение не имеет файл web.xml, вы можете создать его и расположить в папку WEB-INF.
Для ссылок без необходимости безопасности, и вы не хотите автоматического редиректа на HTTPS, вы так же можете конфигурировать в web.xml.
web.xml
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>My Web App</display-name> <!-- .... --> <security-constraint> <web-resource-collection> <web-resource-name>SessionTest</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>Non-SecureResource</web-resource-name> <url-pattern>/test.jsp</url-pattern> <url-pattern>/somepath/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>NONE</transport-guarantee> </user-data-constraint> </security-constraint> <!-- .... --> </web-app>