如何使用 API 密钥访问 gradle 中 artifactory 上的 Maven 存储库?
How to access a maven repo on artifactory in gradle using API key?
我们有一个包含 maven 存储库(和其他元素)的 JFrog 工件。
在我的 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 脚本),不需要 提供用户名:只需在请求 header 中包含 API KEY 就足够了。
问题是:在我们的设置中,我们手边有 API 键,但没有用户 ID。所以我希望能够在 gradle 中定义一个无需用户名即可工作的 Maven 依赖项。
但是当
- 我在 gradle 设置中将用户名留空,gradle 抱怨它为空。
- 除了我的真实用户 ID,我尝试了其他任何方法,我得到了
401 Unauthorized
响应
问题:是否可以在 gradle 中使用与 API KEYS 一起使用并且不需要相应用户 ID 的“maven 样式”存储库定义?
Artifactory 支持基于 header 的身份验证,您可以在 header X-JFrog-Art-Api
中提供 API 密钥(参见 Artifactory REST API). I do not have an Artifactory instance at hand to test, but Gradle's HTTP header authentication 应该可以解决问题:
repositories {
maven {
url = uri("http://repo.mycompany.com/maven2")
credentials(HttpHeaderCredentials::class) {
name = "Private-Token"
value = "TOKEN"
}
authentication {
create<HttpHeaderAuthentication>("header")
}
}
}
我们有一个包含 maven 存储库(和其他元素)的 JFrog 工件。
在我的 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 脚本),不需要 提供用户名:只需在请求 header 中包含 API KEY 就足够了。
问题是:在我们的设置中,我们手边有 API 键,但没有用户 ID。所以我希望能够在 gradle 中定义一个无需用户名即可工作的 Maven 依赖项。
但是当
- 我在 gradle 设置中将用户名留空,gradle 抱怨它为空。
- 除了我的真实用户 ID,我尝试了其他任何方法,我得到了
401 Unauthorized
响应
问题:是否可以在 gradle 中使用与 API KEYS 一起使用并且不需要相应用户 ID 的“maven 样式”存储库定义?
Artifactory 支持基于 header 的身份验证,您可以在 header X-JFrog-Art-Api
中提供 API 密钥(参见 Artifactory REST API). I do not have an Artifactory instance at hand to test, but Gradle's HTTP header authentication 应该可以解决问题:
repositories {
maven {
url = uri("http://repo.mycompany.com/maven2")
credentials(HttpHeaderCredentials::class) {
name = "Private-Token"
value = "TOKEN"
}
authentication {
create<HttpHeaderAuthentication>("header")
}
}
}