Artifactory访问令牌通过Bearer工作,而不是用户

时间:2017-09-12 19:29:58

标签: artifactory

Artifactory OSS
5.4.6 rev 50406900

尝试让访问令牌工作。
我创建了令牌......

e.g。 curl -uadmin:adminpw -X POST“myserver:8081 / artifactory / api / security / token”-d“username = moehoward”

返回的msg看起来很成功...

{
  "scope" : "member-of-groups:readers api:*",
  "access_token" : <very-long-string> 
  "expires_in" : 3600,
  "token_type" : "Bearer"
}

我可以在gui(admin - &gt; Security - &gt; Access Tokens)中看到它,其中“Subject”=对用户(上例中的“moehoward”)并且“Token ID”更短,像... ...

f2eb693a-d4ff-4618-ba52-764dc975c497

为了测试,我尝试使用文档中的示例ping ...

curl -umoehoward:<very-long-string> myserver:8081/artifactory/api/system/ping 

401失败(凭据错误)。

我用gui中看到的“令牌ID”替换令牌,结果相同。

我再次使用“moehoward”用户的硬编码pw替换并且可以正常工作(以“OK”响应)。

我尝试了“-H”身份验证:Bearer“方法使用长字符串并且工作正常。所以我想非常长的字符串是令牌,而不是gui中的”令牌ID“。

问:任何想法为什么这适用于Bearer“而不是用户的名字?

1 个答案:

答案 0 :(得分:1)

因此,您认为这适用于标准身份验证和身份验证HTTP标头。

我在具有相同版本Artifactory OSS 5.4.6的服务器上进行了测试,以下工作正常

注入适当的变量

export SERVER=server-artifactory
export APIKEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

为用户moehoward创建和使用访问令牌

curl -u "admin:$APIKEY" -X POST "http://$SERVER/artifactory/api/security/token" -d "username=moehoward" -d "scope=member-of-groups:readers" > token.log
export TOKEN=`cat token.log | jq -r '.access_token'`
curl -u "moehoward:$TOKEN" "http://$SERVER/artifactory/api/system/ping"
curl -H "Authorization: Bearer $TOKEN" "http://$SERVER/artifactory/api/system/ping"

我得到了#34;好的&#34;从最后两个命令。你能准确地运行这些命令并报告回来吗?

我亲身经历了同样的问题(承载标头工作,标准用户凭证不起作用)和旧版本的curl。显而易见的解决方法是使用Bearer,更复杂的解决方法是升级curl(或使用其他工具)。

你使用的curl版本是什么? 2015年或更近期的任何卷曲都应该可以正常工作。