스프링에서 jasypt를 적용해서 properties 암호화 적용하는 방법 정리

Jasypt 1.9.0 with Spring 3.1


1. properties 파일 만들기

Encrypt.java를 실행하여 암호화 된 값 생성. "password_key"라는 password로 암호화 스트링 생성

- 구글 검색하다 찾은 소스. 출처 미정

import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;

public class Encrypt {
	public static void main(String[] args) {
		StandardPBEStringEncryptor pbeEnc = new StandardPBEStringEncryptor();
	    pbeEnc.setPassword("password_key"); // PBE 값(XML PASSWORD설정)
	 
	    String url = pbeEnc.encrypt("jdbc:derby://127.0.0.1:8133/derby_dev");
	    String username = pbeEnc.encrypt("dev");
	    String password = pbeEnc.encrypt("dev");
	 
	    System.out.println(url);
	    System.out.println(username);
	    System.out.println(password);
	}
}

LHMssTJKhk6jRVWlGkyljN7DXpLcV7IjytRCTuXI/mhBoM/H/ZzeMGWmPSrJz2uw
utKEuibTNS5BLi/VJnYD7A==
5QO34iRUFebKStYcF1ByLg==

properties에 암호화 된 값을 입력하기 위해서는 jasypt에서 구분 할 수 있도록 ENC 키워드를 사용해서 입력한다.

system.enc.properties
#JDBC
driverClassName=org.apache.derby.jdbc.ClientDriver
url=ENC(LHMssTJKhk6jRVWlGkyljN7DXpLcV7IjytRCTuXI/mhBoM/H/ZzeMGWmPSrJz2uw)
username=ENC(utKEuibTNS5BLi/VJnYD7A==)
password=ENC(5QO34iRUFebKStYcF1ByLg==)


2. context-datasource.xml

spel에서 jasypt를 지원하지 않으므로 ${프로퍼티명}을 사용해서 변수값을 입력받는다.


	
	
	
	


3. 적용하기

적용하는 방법은 간단한데 password를 설정하는 방법은 3가지가 있다.

(더 있을 수 있지만 지금까지 찾아 낸 방법은 3가지...)


① -D옵션

java -DAPP_ENCRYPTION_PASSWORD=password_key

passwordSysPropertyName을 사용하여 password_key를 얻음

	
		
		
	

	
		
	

	
		
		
			
				classpath:properties/system.enc.properties
			
		
	


② 환경 변수

UNIX/LINUX의 경우에는 export APP_ENCRYPTION_PASSWORD=password_key

윈도우의 경우에는 환경변수 APP_ENCRYPTION_PASSWORD/password_key 설정

	
		
		
	

	
		
	

	
		
		
			
				classpath:properties/system.enc.properties
			
		
	


③ 설정파일에 직접 입력

스프링 설정파일에 password 항목으로 직접 입력

	
		
	

	
		
		
	

	
		
		
			
				classpath:properties/system.enc.properties
			
		
	






Posted by doveh
,

스프링을 사용 할 때 로컬에서는 적용하지 말아야 할 설정파일이 있을 경우

spring/dev/ 폴더를 만들어서 build 할 때 spring/dev/ 하위의 파일을 spring/ 으로 copy 하고 있었다.

이번에 properties 때문에 -D옵션으로 검색하다 보니

-D옵션을 web.xml에서 읽을 수 있다는 것을 알게 되었고 나름 유용한 것 같다.

나중에 잘 활용 해 봐야지~


1. -D옵션

local, dev환경에 따라서 java(또는 WAS) 실행 시 -Denv=[loc,dev]로 구분하여 실행

java -Denv=loc
java -Denv=dev


2. 설정파일

local, dev환경에 따라서 datasource를 선택적으로 loading

config/spring/context-annotation.xml
config/spring/context-properties.xml
config/spring/context-transaction.xml
config/spring/system-datasource-loc.xml
config/spring/system-datasource-dev.xml


3. web.xml

contextConfigLocation에서 ${env}를 사용해서 datasource를 선택적으로 loading 하기 위해

기본 설정파일은 context로 시작

선택적 설정파일은 system으로 시작하고 [loc, dev] 구분자를 줌.

test


	contextConfigLocation
	
		/WEB-INF/classes/config/spring/context-*.xml
		/WEB-INF/classes/config/spring/system-*-${env}.xml
	


'프로그래밍 > 스프링' 카테고리의 다른 글

jasypt 암호화 properties 적용  (0) 2013.08.05
-D옵션으로 선택적인 properties 사용  (0) 2013.08.03
Posted by doveh
,

나중에 잊어먹기 전에 Spring에서 properties를 사용하는 방법 정리


user.properties는 기본으로 load

system은 [loc, dev]에 따라서 선택적으로 load (java args -D 옵션으로)


1. -D옵션

local, dev환경에 따라서 java(또는 WAS) 실행 시 -Denv=[loc,dev]로 구분하여 실행

java -Denv=loc
java -Denv=dev


2. properties 파일

user.properties
#sample
spring.version=3.1.1

system.loc.properties
#LOCAL JDBC
driverClassName=org.apache.derby.jdbc.ClientDriver
url=jdbc:derby://127.0.0.1:8133/derby_local
username=loc
password=loc

system.dev.properties
#DEV JDBC
driverClassName=org.apache.derby.jdbc.ClientDriver
url=jdbc:derby://127.0.0.1:8133/derby_dev
username=dev
password=dev


3. context-properties.xml

properties의 id="config"로 하고

spel에 의해 #{systemProperties['env']} 부분이 -Denv 에서 넣은 값으로 변환되어 properties 파일이 매핑된다.


	
		
			classpath:user.properties
			classpath:system.#{systemProperties['env']}.properties
		
	


4. XML에서 사용

context-properties.xml에서 설정한 "config"라는 이름으로 spel을 사용해서 properties 값 매핑


	
	
	
	


5. Class에서 사용

@Value와 spel을 사용해서 값 매핑

import org.springframework.beans.factory.annotation.Value;

public class PropTest {
	@Value("#{config['spring.version']}")
	private String springVersion;





Posted by doveh
,