[Jasypt] jdbc.properties 접속정보 PBEWithMD5AndDES 암호화 2
프로그래밍/JAVA 2012. 7. 25. 13:28 |Integrating Jasypt with Spring 3.0
앞선 글에 이어서 JASYPT 라이브러리를 활용하는 소스를 간략이 살펴보도록 하겠다. 적용되는 관련 환경과 툴은 Spring 3.0x 에 Maven 이다.
1. Maven repository
아래 소스와 같이 spring 3.0x 에 맞는 라이브러리가 있다. 그리고 icu4j는 Java 5 SE 이하 버전일 경우에만 추가하고 Java 6 SE 버전 이상일 경우에는 내장된 Normalizer 패키지를 사용하므로 하단의 com.ibm.icu 라이브러리를 추가하지 않는다.
<!-- JASYPT: Spring 3.0x Simplified Encryption --> </dependency>
|
2. 원문 가이드
Maven Dependency Update를 마치고 자바 프로젝트에 라이브러리가 추가 되었다면 이제 Jasypt 를 사용할 준비가 되었다. 아래 Jasypt 사이트에서 상세한 가이드를 통해 쉽게 적용할 수 있다.
http://www.jasypt.org/spring3.html
3. DataSource Configuration (XML)
Jasypt + Spring 3.0 가이드를 살펴보면 아래와 같은 코드가 추가 되어 있는 것을 확인 할 수 있다.
일반적인 DataSource 설정이라면 propertyConfigurer와 dataSource 부분만 설정 되어 있다.
Jasypt를 적용하게 되면
- 빈객체가 두개 추가 되었고
- propertyConfigurer에서 사용되는 Class도 Jasypt에서 제공되는 Class를 활용하도록 한다.
<bean id="environmentVariablesConfiguration" class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig"> class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<bean id="propertyConfigurer" class="org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer">
<!-- DataSource Configuration --> destroy-method="close"> <property name="url" value="${jdbc.url}"/>
. . .
</bean>
|
4. jdbc.properties 파일값 암호화
PBE방식으로 암호화해서 암호화 값을 properties에 대입하도록 한다.
http://www.jasypt.org/api/jasypt/1.8/org/jasypt/encryption/pbe/StandardPBEStringEncryptor.html
StandardPBEStringEncryptor Class를 활용한 값 암호화
StandardPBEStringEncryptor pbeEnc = new StandardPBEStringEncryptor();
String url = pbeEnc.encrypt("jdbc:oracle:thin:@x.x.x.x:1521:xxxxx");
System.out.println(url);
|
jdbc.properties 값대입 예시
jdbc.driverClassName=core.log.jdbc.driver.OracleDriver
|
이때 유의할 점은 ENC를 빼고 값을 대입하면 Jasypt에서 일반 문자열로 인식을 하게 되므로 암호화한 문자열 값 앞에 ENC로 감싸도록 한다.
감사합니다 :)