devstory

Comment redirige http en https automatiquement dans une application web de Java?

  1. Qu'est-ce que Https ?
  2. Rediriger de http vers https

1. Qu'est-ce que Https ?

Hyper Text Transfer Protocol Secure (HTTPS) est la version la sécurisée de HTTP (un protocole (protocol) qui transmet des données entre votre navigateur et votre siteweb). La lettre 'S' à la fin de HTTPS est la abréviation de 'Secure' (La sécurité). Cela signifie que tous les communications entre votre navigateur et le siteweb sont cryptées (encrypted). HTTPS est normallement utilisé pour protecter des transactions confidentielles en ligne telles que des transactions bancaires et des demandes des achats en ligne.
Maintenant, HTTPS est beaucoup conseillable à utiliser, les siteweb qui utilise HTTPS a certaines priorités dans le moteur de recherche de Google.

2. Rediriger de http vers https

Par exemple, vous avez un website actif avec le protocole HTTP. Il est supposé que vous avez installé HTTPS avec succès pour votre site web, mais les pages trouvées par les utilisateurs sur Google sont toujours des liens utilisant le protocole HTTP. Par conséquent, vous devez faire quelque chose pour que l'utilisateur accède automatiquement à ces liens et que ces pages redirigent (redirect) automatiquement vers le HTTPS.
  • http://example.com/somepage ==> https://example.com/somepage
Pour les applications Java Web la réorientation automatique de http vers https devient assez simple. Vous avez certaines configurations dans le fichier 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>
Emballez et redéployez (redeloy) votre application sur Web Server. C'est tout!
Remarque : Si votre application ne contient pas de fichier web.xml, vous pouvez le créer et le mettre dans le dossier WEB-INF.
Quant aux des liens qui n'ont pas besoin d'être sécurisé et ne veulent pas être redirigé automatiquement vers HTTPS vous pouvez les configurer dans le fichier 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>