Spring 설정 파일 암호화

고객이 스프링 설정 파일 암호화를 해달라는 요청을 했습니다.어찌해야하나 막막하기만 하고 답답하던 때에 구글신이 도움을 줘서 http://www.jasypt.org 사이트를 알게 되었습니다. 간단히 암호화를 할 수 있었습니다.

기존 스프링 설정 파일

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="url" value="${test.url}"/>
    <property name="username" value="${test.username}"/>
    <property name="password" value="${test.password}"/>
</bean>

 

암호화 적용후 설정 파일

<bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
    <property name="config" ref="environmentVariablesConfiguration" />
    <property name="password" value="test" />
</bean>

<bean id="propertyConfigurer" class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer">
    <constructor-arg ref="configurationEncryptor" />
    <property name="locations">
<list>

스프링 파일에 URL, USERNAME, PASSWORD를 뺐습니다.그렇다면 계정정보는 어딘가에 넣어야 하는데 그게 test.properties 파일입니다. test.properties파일은 WEB-INF 디렉토리 아래 위치 하게 파일을 생성 합니다.

 

그리고 test.properties 파일에 아래 처럼 입력합니다.

test.url = 
test.username =
test.password =


이제 properties의 키값을 입력 했습니다. 입력한 키값과 스프링 설정 파일에 넣은 값이 동일 해야 합니다. ${test.url} = test.url  이런식으로요.

그럼 properties 의 value 를 채워야 하는데 value를 채우기 위해서는 암호화된 값이 필요 합니다. 심플하게 메인 클래스를 만들어서 채워보겠습니다.


TestMain.java

public static void main(String[] args) {
    StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
    encryptor.setPassword("test"); // XML에서 설정한 비밀번호와 동일하게
    String url = encryptor.encrypt("jdbc:oracle:thin:@127.0.0.1:1521:XE");
    System.out.println("test.url="+url);
    String username = encryptor.encrypt("test");
    System.out.println("test.username="+username);
    String passwordresult = encryptor.encrypt("test123");
    System.out.println("test.password="+passwordresult);
}


나온 결과값을 properties 파일 value에 채워 놓으면 됩니다. 주의할 점은 value에 채워놓으실때 ENC(암호화된 접속 정보) 로 해야 합니다.

가장 중요한 라이브러리 파일을 넣으셨을 꺼라 생각되어 생략 했습니다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중