Encriptacion con Jasypt

De Spring Peru Wiki

Contenido

Inicio

Muchas veces nos topamos con que el usuario requiere que información sensible en la aplicación (como passwords de acceso a la base de datos) esté encriptada. La librería Jasypt permite encriptar datos fácilmente y lo mejor es que se integra con Spring.

Requerimientos

1. Spring [1]

2. Jasypt [2]

Configuración

Para la configuración del Jasypt se require crear algunos beans en el Application Context:

<!--
    Configura el encryptor, basado en variables de entorno.
    El password de encriptación es leido de la variable de entorno APP_ENCRYPTION_PASSWORD
-->
<bean id="environmentVariablesConfiguration"
     class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
   <property name="algorithm" value="PBEWithMD5AndDES" />
   <property name="passwordEnvName" value="APP_ENCRYPTION_PASSWORD" />
</bean>

<!--
    Crea el encriptor
-->
<bean id="configurationEncryptor"
	class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
	<property name="config" ref="environmentVariablesConfiguration" />
</bean>

<!--
    Integración con Spring, esta clase reemplaza el PropertyPlaceholderConfigurer
-->
<bean id="propertyConfigurer"
	class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer">
	<constructor-arg ref="configurationEncryptor" />
	<property name="locations">
		<list>
			<value>classpath:jdbc.properties</value>
		</list>
	</property>
</bean></nowiki>


El archivo jdbc.properties puede tener una entrada como:

jdbc.password=ENC(G6N718UuyPE5bHyWKyuLQSm02auQPUtm)


Con el uso de "ENC" se marcan los valores encriptados dentro de los archivos properties. Lo que hace clase EncryptablePropertyPlaceholderConfigurer es, si el valor de la propiedad está marcado como encriptado, aplica el encriptor configurado para desencriptar el valor de forma transparente.

Esta propiedad puede ser inyectada en una bean dataSource por ejemplo utilizando el placeholder ${jdbc.password} de la misma forma que con el PropertyPlaceholderConfigurer de Spring.

Fuentes

1. Encrypting application configuration files [3]

2. Integrating Jasypt with Spring Framework [4]


--Lshimokawa 31 dic 2007

Herramientas personales
actividades
publicidad