Utilisation de Jasypt sous Spring Boot

Jasypt est une bibliothèque Java qui permet aux développeurs d’ajouter des capacités de chiffrement de base aux projets avec un minimum d’effort et sans recourir au chiffrement des informations. Pour en savoir plus cliquez ici.

Installation sous Spring Boot

Vous devez d’abord installer les dépendances de Jasypt. Sous Maven cela revient à intégrer le code suivant dans votre fichier pom.xml :

<dependency>
  <groupId>com.github.ulisesbocchio</groupId>
  <artifactId>jasypt-spring-boot-starter</artifactId>
  <version>2.1.1</version>
</dependency>

N’hésitez pas à vérifier le numéro de la dépendance sous Maven Repository pour travailler avec la dernière version

Vous devez ensuite annoter votre projet avec @EnableEncryptableProperties de la manière suivante:

import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@EnableEncryptableProperties
@SpringBootApplication
public class ApplicationStart extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(ApplicationStart.class, args);
    }
}

Enfin vous pouvez encadrer les éléments sensibles de votre application via l’attribut ENC() dans vos fichiers de configuration comme indiqué ci-dessous :

spring:
  datasource:
    url: jdbc:mariadb://localhost:3306/my_database
    username: root
    password: ENC(E726/iI+PmVt7KWBzfWlATLuK6szwxGZ) <-- le code crypté
    driver-class-name: org.mariadb.jdbc.Driver

Clé privée

Pour fonctionner correctement Jasypt a besoin d’une clé privée pour décrypter les éléments. Il existe plusieurs méthodes pour injecter la clé dans un programme Java et la fournir à Jasypt.

Le premier moyen, et à n’utiliser que dans un environnement de développement pour des raisons évidentes de sécurité, est de le placer également en paramètre du fichier de configuration de votre application :

jasypt:
  encryptor:
    password: up4ke4zRmiDU

Le deuxième moyen est de lancer le programme java avec en paramètre de la ligne de commande la propriété :

java -Djasypt.encryptor.password="up4ke4zRmiDU" -jar target/your-java-application-1.0.0-SNAPSHOT.jar

Le dernier moyen et probablement le plus « safe » est de passer le paramètre en variable d’environnement. Procédez de cette manière pour appeler la variable dans votre fichier de configuration :

jasypt:
  encryptor:
    password: ${JASYPT_ENCRYPTOR_PASSWORD:}

Vous pouvez tester en ligne de commande la passation du paramètre :

JASYPT_ENCRYPTOR_PASSWORD=up4ke4zRmiDU java -jar target/your-java-application-1.0.0-SNAPSHOT.jar

Comment obtenir une valeur cryptée

Veuillez tout d’abord télécharger un distribuable de Jasypt : télécharger la version 1.9.2.

Décompilez le fichier téléchargé à la racine de votre lecteur C ou D, afin d’éviter les problèmes liées aux noms de fichier/dossier dans l’arborescence. Puis rendez vous dans le dossier : C:\jasypt-1.9.2\bin

Lancez une commande powershell en tapant dans la barre d’adresse de l’explorateur de fichier: powershell. Cela aura pour effet de vous ouvrir une commande directement dans le dossier concerné.

Enfin exécutez la ligne de commande suivante pour générer une valeur cryptée :

.\encrypt.bat input=password password=up4ke4zRmiDU

Votre commande devrait vous restituer le résultat suivant :

----ENVIRONMENT-----------------

Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 11.0.1+13-LTS



----ARGUMENTS-------------------

input: password
password: up4ke4zRmiDU



----OUTPUT----------------------

E726/iI+PmVt7KWBzfWlATLuK6szwxGZ

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.