openplanning

Làm sao tự động chuyển hướng http thành https trong ứng dụng Java Web

  1. Https là gì?
  2. Chuyển hướng http sang https

1. Https là gì?

Hyper Text Transfer Protocol Secure (HTTPS) là phiên bản bảo mật của HTTP (một giao thức (protocol) truyền dữ liệu giữa trình duyệt của bạn và website). 'S' ở cuối HTTPS là viết tắt của 'Secure' (Bảo mật). Nó có nghĩa là tất cả các giao tiếp giữa trình duyệt và website của bạn được mật mã hóa (encrypted). HTTPS thường được sử dụng để bảo vệ các giao dịch trực tuyến có tính bảo mật cao như ngân hàng trực tuyến và các đơn hàng mua sắm trực tuyến.
Hiện nay HTTPS đang được khuyến khích sử dụng, các website sử dụng HTTPS cũng nhận được ưu tiên cao hơn trong bộ máy tìm kiếm của Google.

2. Chuyển hướng http sang https

Nếu bạn có một website đang hoạt động với giao thức HTTP, giả sử rằng bạn đã cài đặt thành công HTTPS cho website của bạn. Nhưng những trang (page) mà người dùng tìm thấy trên Google vẫn là các đường dẫn sử dụng giao thức HTTP, vì vậy bạn cần phải làm gì đó để khi người dùng truy cập vào các đường dẫn này nó sẽ tự động chuyển hướng (redirect) tới HTTPS.
  • http://example.com/somepage ==> https://example.com/somepage
Với các ứng dụng Java Web để tự động chuyển hướng http sang https khá đơn giản. Bạn cần vài cấu hình trong tập tin 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>
Đóng gói và triển khai lại (redeloy) ứng dụng của bạn lên Web Server. Tất cả chỉ có vậy!
Chú ý: Nếu ứng dụng của bạn không có tập tin web.xml, bạn có thể tạo nó và đặt vào thư mục WEB-INF.
Với các đường dẫn không cần bảo mật, và không muốn tự động chuyển hướng sang HTTPS bạn cũng có thể cấu hình trong 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>