如何在 Go 中使用 Artifactory 进行身份验证?

问题描述 投票:0回答:1

我无法真正理解极其简洁的文档 - 我的用例是我在 Artifactory 中的已知 URL 上有一个文件,我想下载它。为此,我需要通过 Artifactory 进行身份验证。

我有这个代码:

func authenticateToArtifactory() string {

rtDetails := auth.NewArtifactoryDetails()
rtDetails.SetUrl(artifactoryURL)
fmt.Printf("Artifactory login name....\n")
var userName string
fmt.Scanln(&userName)
fmt.Printf("Artifactory password....\n")
var passWord string
fmt.Scanln(&passWord)
rtDetails.SetUser(userName)
rtDetails.SetPassword(passWord)
apiKey := rtDetails.GetAPIKey()
fmt.Printf("API key is %s\n", apiKey)
return apiKey
}

但它不起作用 - 说实话,这并不奇怪,因为甚至没有定义 getAPIKey() 调用 - 但我真的不知道在这里做什么。

正确的做法是什么?

编辑:通过阅读周围的内容,我认为我可能必须为此使用http客户端 - 即我无法直接通过Artifactory进行身份验证:这是正确的吗?

go artifactory jfrog-cli
1个回答
1
投票

经过大量的挫折和反复试验后,我认为我已经可以正常工作了 - 文档非常糟糕,所以我确实希望这对其他人有帮助。

这是一个基本设置...(获取所有这些尾随的“/”是必不可少的,据我所知,没有记录了这些):

var artifactoryURL = "https://your.remote.server/artifactory/"

rtDetails := auth.NewArtifactoryDetails()
rtDetails.SetUrl(artifactoryURL)
fmt.Printf("Artifactory login name....\n")
var userName string
userName = [some way of getting user name eg via command line]
fmt.Printf("Artifactory password....\n")
var passWord string
passWord = [some way of getting artifactory password eg via command line]
rtDetails.SetUser(userName)
rtDetails.SetPassword(passWord)

artifactoryHTTP := &http.Client{Transport: &http.Transport{}}
serviceConfig, err := config.NewConfigBuilder().SetServiceDetails(rtDetails).SetDryRun(false).SetHttpClient(artifactoryHTTP).Build()
if err != nil {
    panic(err)
}
rtManager, errSC := artifactory.New(serviceConfig)
if errSC != nil {
    panic(errSC)
}
params := services.NewDownloadParams()
params.Pattern = "[repo_name]/path/to/your/file/your_file"
_, _, err = rtManager.DownloadFiles(params)
if err != nil {
    fmt.Printf("%s\n", err.Error())
    panic(err)
}

存储库名称是文件 URL 后的第一位神器:例如

http://my.server.address/artifactory/repo_name/blah/blah/blah/file_I_want.tar.gz

添加 - 贡献者建议突出显示: auth.NewArtifactoryDetails() 此方法存在于此“github.com/jfrog/jfrog-client-go/artifactory/auth”包中,而不是此包“github.com/jfrog”中/jfrog-client-go/auth

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.