2012-09-06 17 views
12

Sé que es possible to encrypt a password y coloque los datos cifrados en settings.xml, de modo que Maven pueda acceder a un servidor remoto (para la implementación, etc.).Usar datos cifrados en Maven pom

Sin embargo, en mi caso, la contraseña es un parámetro en la configuración de un complemento de un tercero.

Normalmente, la configuración pom.xml para este plugin se ve así:

<build> 
    <plugins> 
     <plugin> 
      <groupId>xxx</groupId> 
      <artifactId>maven-xxx-plugin</artifactId> 
      ... 
      <configuration> 
       <serverAddress>http://myserver</serverAddress> 
       <port>4242</port> 
       <username>unicorn</username> 
       <password>thePassword</password> 
       ... 

Pero no me gusta la idea de establecer la contraseña en texto plano en mi pom.xml. Así que traté de establecerlo como una propiedad (<password>${encrypted.password}</password>) y establecer la contraseña cifrada en el archivo settings.xml, utilizando mvn --encrypt-password thePassword comando:

<profiles> 
    <profile> 
     <id>myprofile</id> 
     <properties> 
      <!-- Encrypted passwords --> 
      <encrypted.password>{dJXVRKwRiY8HqzhGecHd/MYju/aIEmMT8cnE6MY53uPNr0ro/CAsXSLlgzEjxYeU}</encrypted.password> 
     </properties> 

Desafortunadamente, esto no funciona (sospecho que el plugin utiliza la contraseña cifrada como una contraseña "clara", y no intenta descifrarla).

¿Hay alguna manera de hacerlo funcionar? Si no, ¿cuál es la alternativa para evitar poner una contraseña de texto sin formato en pom.xml o settings.xml?

Gracias.

ps: Estoy usando Maven 2.2.1, pero también puedo usar Maven 3.0 si es necesario.

+0

Interesante pregunta. ¿Desea evitar el almacenamiento de la contraseña de texto sin formato en cualquier lugar o solo se trata de archivos 'pom.xml/settings.xml' que le preocupan? –

+0

@AndrewLogvinov ¿Sugiere poner la contraseña en texto plano en un archivo de propiedades externo, y cargar este archivo en el pom? ¿O es otra idea? – romaintaz

+0

Sí, más o menos eso. –

Respuesta

2

Maven proporcionó el soporte necesario para cifrar contraseñas en settings.xml, y para que los complementos las recuperen. Ver por ejemplo SqlExecMojo.java.

Los complementos "solo" tienen que usar esta característica para ser más fáciles de usar con la gestión de credenciales.

+0

Gracias Nicolas por su respuesta. Verificaría con los desarrolladores de complementos si hay una forma de que implementen esta característica en la próxima versión ... – romaintaz

+2

Ahora, para obtener un crédito adicional, ¿qué ocurre si quiero usar ese proyecto cifrado como parte del filtrado de recursos en lugar de en un complemento? ? –

+0

@nicolas de loof: El enlace de arriba está pidiendo credenciales. –

0

hasta no, solo conozco el cifrado de contraseña que mencionas. El resto del cifrado debe ser manejado por el plugin mismo. O mediante un complemento. Puede ser una solución colocar las claves de cifrado en settings.xml y usar properties-plugin para cargar las propiedades del archivo (o solo como fuente de inspiración) y alguna biblioteca como jasypt para crear su propio complemento de cifrado. Puede configurar el complemento cuyas propiedades desea descifrar y reemplazar, y vincularlo a una fase temprana en el ciclo de vida de maven.

No he visto algo listo para usar de esta manera, pero parece que no es demasiado complicado.

Jasypt también se utiliza para el mismo propósito con Spring PropertyPlaceholderconfigurer (cifra la fecha en archivos .properties).

1

https://github.com/echocat/velma

echocat Velma

... es una contraseña maestra-Protegido por contraseña segura para sus contraseñas de Maven. Estas contraseñas se almacenan normalmente en .m2/settings.xml y podrían protegerse con una contraseña maestra en .m2/settings-security.xml. Pero de esta manera todavía es peligroso porque cada persona con acceso a su computadora tiene acceso a su Contraseña Maestra.

Tal vez sea eso lo que estás buscando.

Cuestiones relacionadas