We have a JFrog artifactory that contains a maven repo (and other elements).
In my gradle setup, I defined this:
repositories {
maven {
url = uri("https://eu.artifactory....../whatever/")
credentials {
username = "my-full-user-id"
password = "my-real-password"
}
}
}
Works fine. It also works when I change the password entry to use my JFrog API KEY.
But: using the api key only works when username
contains my real user id.
Whereas: when making https requests "directly" to JFrog (for example using a python script), it is not required to provide a user name: simply having the API KEY in the request header is enough.
Thing is: in our setup, we have the API key at hand, but not the user id. So I had hoped to be able to define a maven dependency in gradle that works without user names.
But when
401 Unauthorized
responseQuestion: is it possible to use "maven style" repository definition in gradle that works with API KEYS and that doesn't need the corresponding user ids?
Artifactory supports header based authentication where you provide the API key in the header X-JFrog-Art-Api
(see Artifactory REST API). I do not have an Artifactory instance at hand to test, but Gradle's HTTP header authentication should do the trick:
repositories {
maven {
url = uri("http://repo.mycompany.com/maven2")
credentials(HttpHeaderCredentials::class) {
name = "Private-Token"
value = "TOKEN"
}
authentication {
create<HttpHeaderAuthentication>("header")
}
}
}