betacode

Как автоматически перенаправить http на https в веб-приложение Java?

  1. Что такое Https?
  2. Редирект http на https

1. Что такое Https?

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

2. Редирект http на https

Если у вас есть вебсайт, который работает с протоколом 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>

Руководства Java Servlet/JSP

Show More