如何使用API密钥访问Gradle中Artifactory上的Maven Repo?

bkkx9g8r  于 2023-05-28  发布在  Maven
关注(0)|答案(2)|浏览(196)

我们有一个JFrog artifactory,它包含一个maven repo(和其他元素)。
在我的Gradle设置中,我定义了以下内容:

repositories {
    maven {
        url = uri("https://eu.artifactory....../whatever/")    
        credentials {
            username = "my-full-user-id"
            password = "my-real-password"
        }
    }
}

工作正常。当我更改密码输入以使用我的JFrog API KEY时,它工作。
但是:只有当username包含我的真实的用户id时,使用API密钥才有效。
然而:当“直接”向JFrog发出https请求时(例如使用python脚本),需要提供用户名:只需在请求头中包含API KEY即可。
问题是:在我们的设置中,我们手头有API密钥,但没有用户ID。所以我希望能够在gradle中定义一个maven依赖项,它可以在没有用户名的情况下工作。
但是什么时候

  • 我在gradle设置中将用户名留空,gradle抱怨它为null。
  • 我尝试了除真实的用户ID以外的任何其他操作,得到了401 Unauthorized响应

问:是否可以在gradle中使用“maven style”存储库定义,它与API KEYS一起工作,并且不需要相应的用户ID?

5lhxktic

5lhxktic1#

Artifactory支持基于头的身份验证,在头中提供API密钥X-JFrog-Art-Api(参见Artifactory REST API)。我手头没有Artifactory示例来测试,但Gradle的HTTP头认证应该可以做到这一点:

repositories {
    maven {
        url = uri("http://repo.mycompany.com/maven2")
        credentials(HttpHeaderCredentials::class) {
            name = "Private-Token"
            value = "TOKEN"
        }
        authentication {
            create<HttpHeaderAuthentication>("header")
        }
    }
}
raogr8fs

raogr8fs2#

使用“Private-Token”的答案对我来说不适用于Artifactory 7.41。
相反,这是什么工作:

repositories {
        maven {
            url "http://<artifactory.server.fqdn>/artifactory/<maven-repo-name>"
            credentials(HttpHeaderCredentials) {
                name = "Authorization"
                value = "Bearer <token>"
            }
            authentication { header(HttpHeaderAuthentication) }
        }
    }

相关问题