Jfrog CLI不尊重已配置的API密钥

时间:2017-03-16 15:56:15

标签: powershell artifactory jfrog-cli

我使用Powershell DSC设置Windows Server 2012 R2盒子。作为配置过程的一部分,我配置jfrog.exe并将配置命令作为服务帐户执行:

jfrog rt config --url=$localArtifactoryInstance --user=$username --apikey=$apikey

此命令按预期在服务帐户的主目录(C:\ Users \ $ serviceAccount.jfrog.jfrog-cli.conf)中创建.jfrog.jfrog-cli.conf,其中包含URL / username / apiKey 。

配置后,此服务帐户需要提供“促销”功能。从一个存储库到另一个存储库的工件:

jfrog rt move '$devRepo/(Org)/(Org.Common.Configuration)/Org.Common.Configuration.1.0.0.nupkg' '$prodRepo/{1}/{2}/'

此命令被401:

拒绝
[Error] Artifactory response: 401 Unauthorized
{
  "errors": [
    {
      "status": 401,
      "message": "Bad authentication. Provided username or password are incorrect."
    }
  ]
}

但是,当我将与jfrog-cli.conf 中已配置的相同的API密钥添加到命令时:

jfrog rt move '$devRepo/(Org)/(Org.Common.Configuration)/Org.Common.Configuration.1.0.0.nupkg' '$prodRepo/{1}/{2}/' --ApiKey $apiKey

它很成功,我可以通过Artifactory UI验证成功。

  • 执行该命令的服务帐户与执行jfrog rt config的服务帐户相同,并匹配jfrog-cli.conf中的用户名。
  • API密钥是在Artifactory中为该服务帐户生成的
  • 我尝试在jfrog-cli.conf中更改用户名以包含但不包含域名
  • 我确保环境变量' HOME'存在并指向服务帐户的主目录(https://github.com/JFrogDev/jfrog-cli-go/blob/master/utils/ioutils/ioutils.go似乎暗示此变量是必要的)
  • ' jfrog rt config show'显示正确的数据

感谢您提供的任何帮助或指导!

1 个答案:

答案 0 :(得分:4)

' 401 Unauthorized'响应是配置用户名和API密钥的结果。

运行jfrog rt config时,您可以提供 用户名/密码对 API密钥。配置用户名和api密钥后,我的命令失败,因为jfrog.exe使用用户名和密码联系服务器。

解决方案是完全从我的Powershell DSC配置中删除用户名,并在运行jfrog rt config时仅提供 url apikey