Jfrog CLI 不尊重配置的 API 密钥

Mat*_*oto 3 powershell artifactory jfrog-cli

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

jfrog rt config --url=$localArtifactoryInstance --user=$username --apikey=$apikey
Run Code Online (Sandbox Code Playgroud)

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

配置后,此服务帐户负责将工件从一个存储库“提升”到另一个存储库:

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

该命令被拒绝并返回 401:

[Error] Artifactory response: 401 Unauthorized
{
  "errors": [
    {
      "status": 401,
      "message": "Bad authentication. Provided username or password are incorrect."
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

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

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

成功了,我可以通过 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' 显示正确的数据

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

Mat*_*oto 5

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

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

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