Tavaszi rendszerindítás beállítása a Jasypt alkalmazással

1. Bemutatkozás

A Jasypt (Java egyszerűsített titkosítás) Spring Boot segédprogramokat kínál a tulajdonforrások titkosításához a Boot alkalmazásokban.

Ebben a cikkben megvitatjuk, hogyan tudjuk hozzáadni a jasypt-spring-boot támogatást és használni.

A Jasypt titkosítási keretrendszerének használatával kapcsolatos további információkért tekintse meg itt a Jasypt bevezetését.

2. Miért éppen Jasypt?

Amikor bizalmas információkat kell tárolnunk a konfigurációs fájlban - ez azt jelenti, hogy lényegében sebezhetővé tesszük ezeket az információkat; ide tartoznak bármilyen kényes információk, például hitelesítő adatok, de ennél sokkal több.

Által a Jasypt használatával titkosítást nyújthatunk a tulajdonságfájl attribútumaihoz és alkalmazásunk elvégzi a visszafejtés és az eredeti érték beolvasásának feladatát.

3. A JASYPT használatának módjai a tavaszi csomagtartóval

Beszéljük meg a Jasypt és a Spring Boot különböző módjait.

3.1. Használata jasypt-pring-boot-starter

Egyetlen függőséget kell hozzáadnunk a projektünkhöz:

 com.github.ulisesbocchio jasypt-spring-boot-starter 2.0.0 

A Maven Central rendelkezik a jasypt-spring-boot-starter legújabb verziójával.

Titkosítsuk most a szöveget „[Email protected]” titkos kulcs „jelszóval”, és adja hozzá a titkosított.tulajdonságok:

encrypted.property = ENC (uTSqb9grs1 + vUv3iN8lItC0kl65lMG + 8)

És definiáljunk egy konfigurációs osztályt AppConfigForJasyptStarter - a titkosítva.tulajdonságok fájlt a PropertySource :

@Configuration @PropertySource ("encrypted.properties") public class AppConfigForJasyptStarter {} 

Most írunk egy szolgálati babot PropertyServiceForJasyptStarter lekérni az értékeket a titkosítva.tulajdonságok. A visszafejtett érték a @Érték kommentár vagy a getProperty () a metódusa Környezet osztály:

@Service public class PropertyServiceForJasyptStarter {@Value ("$ {encrypted.property}") private String tulajdonság; public String getProperty () {return tulajdonság; } public String getPasswordUsingEnvironment (Környezetkörnyezet) {return environment.getProperty ("titkosított.tulajdonság"); }} 

Végül, a fenti szolgáltatási osztály használatával és a titkosításhoz használt titkos kulcs beállításával könnyen visszakereshetjük a visszafejtett jelszót és felhasználhatjuk az alkalmazásunkban:

@Test public void whenDecryptedPasswordNeeded_GetFromService () {System.setProperty ("jasypt.encryptor.password", "jelszó"); PropertyServiceForJasyptStarter service = appCtx .getBean (PropertyServiceForJasyptStarter.class); assertEquals ("[e-mail védett]", service.getProperty ()); Környezeti környezet = appCtx.getBean (Környezet.osztály); assertEquals ("[e-mail védett]", service.getPasswordUsingEnvironment (környezet)); } 

3.2. A jasypt-spring-boot használatával

Nem használó projektek esetén @SpringBootApplication vagy @EnableAutoConfiguration, használhatjuk a jázpt-pring-boot függőség közvetlenül:

 com.github.ulisesbocchio jasypt-spring-boot 2.0.0 

Hasonlóképpen titkosítsuk a szöveget „[Email protected]” titkos kulccsal "Jelszó" és adja hozzá a encryptedv2.properties:

encryptedv2.property = ENC (dQWokHUXXFe + OqXRZYWu22BpXoRZ0Drt)

És legyen egy új konfigurációs osztály a jasypt-spring-boot függőséghez.

Itt hozzá kell adnunk a kommentárokat @EncryptablePropertySource :

@Configuration @EncryptablePropertySource ("encryptedv2.properties") public class AppConfigForJasyptSimple {}

Továbbá egy új PropertyServiceForJasyptSimple bab visszatérni encryptedv2.properties meghatározása:

@Service public class PropertyServiceForJasyptSimple {@Value ("$ {encryptedv2.property}") private String tulajdonság; public String getProperty () {return tulajdonság; }} 

Végül a fenti szolgáltatási osztály használatával és a titkosításhoz használt titkos kulcs beállításával könnyen visszakereshetjük a encryptedv2.property:

@Test public void whenDecryptedPasswordNeeded_GetFromService () {System.setProperty ("jasypt.encryptor.password", "jelszó"); PropertyServiceForJasyptSimple service = appCtx .getBean (PropertyServiceForJasyptSimple.class); assertEquals ("[e-mail védett]", service.getProperty ()); } 

3.3. Az egyedi JASYPT titkosító használata

A 3.1. Szakaszban meghatározott titkosítók. és 3.2. az alapértelmezett konfigurációs értékekkel vannak felépítve.

Menjünk, és definiáljuk saját Jasypt titkosítónkat és próbálja használni az alkalmazásunkhoz.

S0, az egyedi titkosító komponens így fog kinézni:

@Bean (name = "encryptorBean") public StringEncryptor stringEncryptor () {PooledPBEStringEncryptor encryptor = új PooledPBEStringEncryptor (); SimpleStringPBEConfig config = új SimpleStringPBEConfig (); config.setPassword ("jelszó"); config.setAlgorithm ("PBEWithMD5AndDES"); config.setKeyObtentionIterations ("1000"); config.setPoolSize ("1"); config.setProviderName ("SunJCE"); config.setSaltGeneratorClassName ("org.jasypt.salt.RandomSaltGenerator"); config.setStringOutputType ("base64"); encryptor.setConfig (config); visszatérő titkosító; } 

Ezenkívül módosíthatjuk a SimpleStringPBEConfig.

Is, hozzá kell adnunk egy tulajdonságot „Jasypt.encryptor.bean” a miénknek application.properties, hogy a Spring Boot tudja, melyik egyedi titkosítót kell használnia.

Például hozzáadjuk az egyéni szöveget „[Email protected]” titkos kulccsal titkosítva "Jelszó" ban,-ben application.properties:

jasypt.encryptor.bean = encryptorBean encryptedv3.property = ENC (askygdq8PHapYFnlX6WsTwZZOxWInq + i)

Miután beállítottuk, könnyen megszerezhetjük a titkosítottv3.tulajdonság a tavaszi Környezet:

@Test public void whenConfiguredExcryptorUsed_ReturnCustomEncryptor () {Környezeti környezet = appCtx.getBean (Environment.class); assertEquals ("[e-mail védett]", environment.getProperty ("encryptedv3.property")); } 

4. Következtetés

A Jasypt használatával megtehetjüktovábbi biztonságot nyújt az alkalmazás által kezelt adatok számára.

Ez lehetővé teszi számunkra, hogy jobban összpontosítsunk alkalmazásunk lényegére, és szükség esetén egyedi titkosítás biztosítására is felhasználható.

Mint mindig, ennek a példának a teljes kódja elérhető a Githubon.