Una práctica habitual es crear perfiles para la configuración de distintos entornos en una aplicación maven. Y como es normal dentro de esta configuración es posible que vayan contraseñas. Hoy mostraremos como encriptar contraseñas en Maven y un par de consejos para el correcto manejo de las mismas.
Para empezar debemos generar una clave maestra. Esta la crearemos a través del siguiente comando:
mvn --encrypt-master-password
Al introducirlo nos pedirá que introduzcamos nuestra clave maestra. Y nos la devolverá códificada.
Esta clave maestra, con el siguiente formato, la incluiremos en el fichero .m2/settings-security.xml, (que como sabéis se encuentra dentro de la carpeta home del usuario).
Ahora ya podremos encriptar contraseñas a través del comando --encrypt-password o -ep
Pero aquí viene un pequeño pero. Estas contraseñas generadas las podremos incluir solamente en el fichero settings.xml (ubicado también en la carpeta m2). ¿Por qué en el settings.xml y no directamente en el pom.xml?. Pues porque es una best practices, y la sección server del settings.xml se creó para eso mismo: gestionar información sensible sobre servidores, la cual no debería esta navegando libremente. Por tanto nuestra configuración quedaría así:
Y con esto ya tendríamos nuestras contraseñas relativas a los servidores codificadas y listas para usar con maven... ¿Pero como lo uso dentro del pom.xml? Esto parece una verdad a medias...
Buena pregunta. podemos hacerlo de dos formas:
{Q0eIoh2W24Hovj4oE0pXgObO3zHOXn/gvQC1gMFoI=}
Esta clave maestra, con el siguiente formato, la incluiremos en el fichero .m2/settings-security.xml, (que como sabéis se encuentra dentro de la carpeta home del usuario).
<settingsSecurity> <master>{Q0eIoh2W24Hovj4oE0pXgObO3zHOXn/gvQC1gMFoI=}</master> </settingsSecurity>
Ahora ya podremos encriptar contraseñas a través del comando --encrypt-password o -ep
mvn -ep root {d/vIFp4AAAH2yHgBmc4A5NHaUdhOQWon9htDpHZBY=}
Pero aquí viene un pequeño pero. Estas contraseñas generadas las podremos incluir solamente en el fichero settings.xml (ubicado también en la carpeta m2). ¿Por qué en el settings.xml y no directamente en el pom.xml?. Pues porque es una best practices, y la sección server del settings.xml se creó para eso mismo: gestionar información sensible sobre servidores, la cual no debería esta navegando libremente. Por tanto nuestra configuración quedaría así:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository /> <interactiveMode /> <offline /> <pluginGroups /> <servers> <server> <id>mysql-local</id> <username>root</username> <password>{d/vIFp4AAAH2yHgBmc4A5NHaUdhOQWon9htDpHZBY=}</password> </server> </servers> <mirrors /> <proxies /> <profiles /> <activeProfiles /> </settings>
Y con esto ya tendríamos nuestras contraseñas relativas a los servidores codificadas y listas para usar con maven... ¿Pero como lo uso dentro del pom.xml? Esto parece una verdad a medias...
Buena pregunta. podemos hacerlo de dos formas:
- Si vamos a utilizar un plugin, podemos cambiar la configuración username/password por server. Siempre que ese plugin lo permita, por ejemplo tomcat7-maven-plugin lo permite.
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <url>http:// localhost:8080/manager</url> <server>TomcatServerConfiguredInSettingsXml</server> </configuration> </plugin>
- Acceder a sus datos a través de servers-maven-extension
<build> <extensions> <extension> <groupId>com.github.shyiko.servers-maven-extension</groupId> <artifactId>servers-maven-extension</artifactId> <version>1.3.1</version> </extension> </extensions> </build> <profiles> <profile> <id>local</id> <properties> <mysql.userName>${settings.servers.mysql-local.username}</mysql.userName> <mysql.password>${settings.servers.mysql-local.password}</mysql.password> </properties> </profile> </profiles>
No hay comentarios:
Publicar un comentario