2014-02-27 3 views
1

어떤 방식 으로든 암호화 된 것으로 표시된 해결 된 속성 값이있는 경우 속성 자리 표시 자 메커니즘을 가로채는 방법이 있는지 찾고 싶습니다. 해독 할 수 있습니다. 결과를 해석 된 값으로 사용하십시오.스프링 속성 자리 표시 자 암호 해독 된 속성

Jasypt는 이와 같은 것을 지원하지만 bean을 꾸미기 전에 실제로 모든 속성 값을 암호 해독합니다.

어떤 생각이나 아이디어가 있습니까?

나는 내 자신의 암호 해독 메커니즘을 가지고 있으며 인코딩 된 값의 접두사로 {AES}로 암호화 된 값 문자열을 표시합니다.

편집 그래서 나는 나에게 내가 작업 한 올바른 암호 해독을 얻을 것과 같은 방식으로 차단의 Jasypt 구현에 대한 위에서 말했듯이. 내 관심사는 - 개체 컬렉션이 메모리에 보관되는 지 또는 개체 틀 구성자 사용이 끝난 후에 사라지는 것입니까?

답변

4

PropertyPlaceholderConfigurer을 확장하고 org.springframework.beans.factory.config.PropertyResourceConfigurer.convertPropertyValue(String) 메서드를 재정의하면 "{EAS}"으로 시작하는 경우 암호를 해독 할 수 있습니다. 다음 클래스와 같은 뭔가 PropertyPlaceHolder로 사용할 수 있습니다 :

package foo.bar; 

import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer; 

public class EncryptationAwarePropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer{ 

@Override 
protected String convertPropertyValue(String originalValue) { 
    if (originalValue.startsWith("{AES}")) { 
     return decrypt(originalValue.substring(5)); 
    } 
    return originalValue; 
} 

private String decrypt(String value) { 
    return value.toLowerCase(); // here your decryption logic 
} 

}

귀하의 문맥 PropertyPlaceholder과 같이 선언 할 것이다 :

<bean class="foo.bar.EncryptationAwarePropertyPlaceholderConfigurer"> 
    <property name="location"> 
     <value>my.properties</value> 
    </property> 
</bean> 

당신은 같은 속성을 사용하는 것이 쉬운 같은 :

@Value("${encryptedMyProtectedValue}") 
private String decryptedValue; 

편집 : org.springframework.beans.factory.config.PropertyResourceConfigurer.postProcessBeanFactory(ConfigurableListableBeanFactory) 기본적으로 속성을 로컬 Properties 개체에로드하고 변환하고 처리합니다. 처리는 org.springframework.beans.factory.config.PropertyPlaceholderConfigurer.processProperties(ConfigurableListableBeanFactory, Properties)을 호출하여 발생합니다. org.springframework.beans.factory.config.PropertyPlaceholderConfigurer을 사용하면 Properties 객체는 빈 처리 후 메모리에 보관되지 않습니다. 기본적으로 컨텍스트에서 콩의 속성을 설정하는 데만 사용되며 처리됩니다.

+0

내가 이미 그 부분을 통해 얻은 것처럼 당신에게 +1을줍니다 :-). 내 질문을 편집 중입니다 –

+0

마지막 편집 확인 :-) –

관련 문제