java – 在使用常春藤和私人公司存储库时,我可以在何处放置凭据?

前端之家收集整理的这篇文章主要介绍了java – 在使用常春藤和私人公司存储库时,我可以在何处放置凭据?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用Ant Ivy,而我公司最近为我们自己的私人图书馆设立了一个Nexus服务器. Ivy可以通过使用ibilio解析器和m2compatible = true从Nexus服务器获取依赖关系,但是我必须将凭据放在ivysettings.xml文件中.

不同的开发人员应该如何存储他们的凭据?

ivysettings.xml文件是不是应该在vcs中提交?

我真的不想用纯文本存储我的密码.

解决方法

使用具有控制Nexus凭据的属性的设置文件
  1. <ivysettings>
  2. <property name="repo.host" value="default.mycompany.com" override="false"/>
  3. <property name="repo.realm" value="Sonatype Nexus Repository Manager" override="false"/>
  4. <property name="repo.user" value="deployment" override="false"/>
  5. <property name="repo.pass" value="deployment123" override="false"/>
  6.  
  7. <credentials host="${repo.host}" realm="${repo.realm}" username="${repo.user}" passwd="${repo.pass}"/>
  8.  
  9. ..
  10. ..
  11. </ivysettings>

运行构建时,您可以指定真实的用户名和密码:

  1. ant -Drepo.user=mark -Drepo.pass=s3Cret

更新/增强

将密码作为属性存储在文件系统上需要加密.

Jasypt具有可生成加密字符串的命令行程序:

  1. $encrypt.sh verbose=0 password=123 input=s3Cret
  2. hXiMYkpsPY7j3aIh/2/vfQ==

这可以保存在构建的属性文件中:

  1. username=bill
  2. password=ENC(hXiMYkpsPY7j3aIh/2/vfQ==)

以下ANT目标将解密任何加密的ANT属性

  1. <target name="decrypt">
  2. <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="build.path"/>
  3.  
  4. <groovy>
  5. import org.jasypt.properties.EncryptableProperties
  6. import org.jasypt.encryption.pbe.StandardPBEStringEncryptor
  7.  
  8. StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor()
  9. encryptor.setPassword(properties["master.pass"])
  10.  
  11. Properties props = new EncryptableProperties((Properties)properties,encryptor);
  12.  
  13. props.propertyNames().each {
  14. properties[it] = props.getProperty(it)
  15. }
  16. </groovy>
  17. </target>

当然,为了使这项工作,用于加密属性的密码需要被指定为构建的一部分.

  1. ant -Dmaster.pass=123

这意味着解决方案只适用于隐藏数据休息.

猜你在找的Java相关文章