Encriptacion con Jasypt
Escrito por Lennon Shimokawa   
Domingo 30 de Diciembre de 2007 15:00

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
  2. Jasypt

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....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...EncryptablePropertyPlaceholderConfigurer">
  <constructor-arg ref="configurationEncryptor" />
  <property name="locations">
    <list>
      <value>classpath:jdbc.properties</value>
    </list>
  </property>
</bean>

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
  2. Integrating Jasypt with Spring Framework
Ultima actualización Lunes 04 de Febrero de 2008 17:34