반응형
spring boot application.properties custom encryption/decryption.
스프링부트 기본 프라퍼티 자체 암호화 복호화 방법을 공유합니다.
보통 jdbc 의 DB username, password를 암호화하는데 많이 사용됩니다.
"jdbc 암호화" 라는 키워드로 검색을 해보면 아마 jasypt 오픈 소스를 이용해 암호화하는 내용들이 많이 있을겁니다.
어떤 이유에서든지 jasypt를 이용하지 않고 jdbc 암호화를 하고 싶은 분들에게 이 방법을 공유합니다.
application.properties 의 내용을 복호화하기 위한 소스입니다.
여기서는 spring.datasource.username, spring.datasource.password 이 두가지 항목에 대해서만 명시적으로 불러와서 암호화된 내용을 복호화해서 넘기고 있습니다. application.properties 의 내용은 자체암호화 모듈로 암호화한 내용을 넣어두시면 됩니다.
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.env.EnvironmentPostProcessor; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.PropertiesPropertySource; import 자체암호화모듈임포트; public class EncryptionEnvironmentPostProcessor implements EnvironmentPostProcessor { Logger logger = LoggerFactory.getLogger(EncryptionEnvironmentPostProcessor.class); @Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { Properties props = new Properties(); try { props.put("spring.datasource.password", 자체복호화(environment.getProperty("spring.datasource.password"))); props.put("spring.datasource.username", 자체복호화(environment.getProperty("spring.datasource.username"))); } catch (Exception e) { logger.error("datasource 복호화실패", e); } environment.getPropertySources().addFirst(new PropertiesPropertySource("myProps", props)); } } |
위의 소스를 적용시키려면 클래스패스 루트에 META-INF/spring.factories를 만들어서 아래처럼 내용을 넣어주시면 됩니다.
# META-INF/spring.factories org.springframework.boot.env.EnvironmentPostProcessor=전체패키지.EncryptionEnvironmentPostProcessor |
간단하게 DB 아이디, 패스워드를 암호화해서 프라퍼티로 저장할 수 있게 되었습니다.
반응형
'java' 카테고리의 다른 글
java byte substring (0) | 2018.05.15 |
---|---|
pure java http client example (jdk 1.8) (0) | 2018.04.01 |
java - spring boot filter 등록 (0) | 2018.03.23 |
org.apache.catalina.util.SessionIdGeneratorBase : Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [289,555] milliseconds. (0) | 2018.03.21 |
spring boot - spring.log 남기지 않기. (0) | 2018.02.21 |
java poi excel write 엑셀 쓰기 (0) | 2018.01.29 |
java 전화번호 형식 변환 (7) | 2018.01.23 |
spring security cache control (0) | 2018.01.16 |