2011-11-04 5 views
10

que estoy ocultando la contraseña de base de datos en datasource.groovy haciendoocultar la contraseña de base de datos usando la especificación codec en datasource.groovy no trabajar

dataSource { 
pooled = true 
driverClassName = "com.mysql.jdbc.Driver" 
username = "root" 
password = "q59YgJCdHw3dshwlsa==" 
passwordEncryptionCodec = DESCodec 
dbname="mydbname" 
} 

siguieron el artilce: http://jira.grails.org/browse/GRAILS-3620

corro la clase códec maravilloso separado para obtener la cadena cifrada de esta manera: groovy grails-app/utils/DESCodec.groovy mypassword_string_text.

Pero después de colocar la clase DESCodec en el paquete de utilidades en grillas, cuando intento iniciar el servidor, no se inicia sino que se apaga directamente, se inicia cuando coloco directamente la contraseña correcta y comente el códec y la cadena cifrada. Supongo que no está encontrando la clase de códec/cualquier otra cosa que me falta en la configuración, como especificar que la clase de códec requiere comillas o cualquier cambio de ruta o debería cambiar el algoritmo, por cierto la clase DESCodec es la última clase de códec en el enlazar.

Estoy trabajando para que la configuración sea específica del entorno y se exteriorice, pero aún necesito que la contraseña se cifre aquí y luego se descifre antes de conectarme a la base de datos.

+0

Moví la clase Descodec al directorio de utilidades/gra/reports, e importé la clase en el origen de datos.groovy como import gra.reports.Descodec, todavía no funciona ... –

Respuesta

13

Creo que la mejor manera de hacerlo es externalizar la configuración específica del entorno (especialmente contraseñas, URL, direcciones de correo electrónico y demás) y proteger el archivo de configuración con los permisos adecuados en el sistema de archivos de la máquina de destino.

En Config.groovy (por ejemplo):

grails.config.locations = [ 
    "file:/etc/${appName}/conf/db.properties" 
] 

y en el fichero de configuración:

dataSource.username = "root" 
dataSource.password = "secret" 

Me suelen hacer esto para producción de configuración, pero mantener dev config/prueba en el Config .groovy por conveniencia. Cuando ejecuta en dev/test, simplemente recibe una advertencia al inicio si no puede encontrar el archivo de configuración al que se hace referencia. Si lo encuentra, anulará lo que está en Config.groovy

Esto tiene la ventaja adicional de no requerir que su archivo de guerra sea recompilado y redistribuido si cambia la configuración de cualquier entorno de producción, simplemente cambie el archivo de configuración y reinicie la aplicación.

+0

¡gracias por compartir esto! – Chris

+0

gracias por la propina! –

+0

Hola Darrend, acepto que la externalización de las variables es el camino a seguir, pero aún quiero cifrar la cadena de contraseña incluso en la ubicación externalizada. –

Cuestiones relacionadas