как использовать зашифрованное свойство JASYPT из application.properties внутри Entity аннотированного класса Spring Boot 2.0.0 - PullRequest
0 голосов
/ 01 августа 2020

Конфигурация : Весенняя загрузка 2.0.0 ДЖАСИПТ: 2.0.0 Postgres 11 / В настоящее время я использую шифрование БД с помощью ключа, предоставленного из файла констант Я хочу удалить его из исходного кода и прочитать из файла свойств. Я намерен предоставить ключ JASYPT через переменную окружения или командную строку. Я хочу прочитать / предоставить расшифрованный ключ в классе Entity. Любая помощь приветствуется.

parent project: parent
child1 project: jack
child2 project: tim

Parent POM

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

Child1 POM (jack)

<dependency>
    <groupId>com.test.example</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>
    

Child2 POM (tim)

<dependency>
    <groupId>com.test.example</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

Child1: application-profile.properties

db.encryption.key=ENC(XcBjfjDDjxeyFBoaEPhG14wEzc6Ja+Xx+hNPrJyQT88=)
jasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator
jasypt.encryptor.algorithm=PBEWithMD5AndDES
jasypt.encryptor.password=supersecretz

Parent > CommonConfig.java
Parent > AppConstants.java

Parent> Entity Class

@Entity
public class DummyEntity {
    @Id
    @Column(name = "ID")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    @Column(name = "sensitiveInfo")
    @ColumnTransformer(forColumn = "sensitiveInfo", read = "pgp_sym_decrypt(sensitiveInfo::bytea, AppConstants.DB_ENCRYPTION_KEY)", write = "pgp_sym_encrypt(?, AppConstants.DB_ENCRYPTION_KEY)")
    private String sensitiveInfo;
}

Основной класс

child1 > JackSpringMainApplication.java

Основной класс

child2 > TimSpringMainApplication.java
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...