如何获取Jenkins的API令牌

hgncfbus  于 2022-12-11  发布在  Jenkins
关注(0)|答案(4)|浏览(320)

我正在尝试使用Jenkins REST API。在说明中它说我需要有API密钥。我已经找遍了所有的配置页面来找到它。我如何获得Jenkins的API密钥?

laawzig2

laawzig21#

自Jenkins 2.129 API令牌配置has changed
您现在可以拥有多个令牌并为它们命名。它们可以单独撤销。
1.登录到Jenkins。
1.单击您的姓名(右上角)。
1.单击配置(左侧菜单)。
1.使用“添加新令牌”按钮生成一个新令牌,然后对其命名。
1.您必须在生成令牌时复制令牌,因为以后无法查看令牌。
1.当不再需要旧令牌时撤销旧令牌。
Jenkins之前2.129:显示API标记,如下所示:
1.登录到Jenkins。
1.单击您的姓名(右上角)。
1.单击配置(左侧菜单)。
1.单击显示API标记
显示API令牌。
您可以通过单击更改API令牌按钮来更改令牌。

klr1opcd

klr1opcd2#

Jenkins 2.129的非用户界面方法是:

curl 'https://<jenkinsURL>/me/descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken' \
--data 'newTokenName=foo' \
--user username:Password

返回:

{
  "status": "ok",
  "data": {
    "tokenName": "foo",
    "tokenUuid": "<uuid>",
    "tokenValue": "<redacted>"
  }
}

Jenkins2.129

curl http://<username>:<password>@<jenkins-url>/me/configure
yebdmbv4

yebdmbv43#

    • 在Jenkins 2.225中测试**

经过几个小时的研究,我找到了答案:
使用API标记而不是CSFR标记。但是,如果要从任何其他客户端(Postman、CLI、cURL等)进行验证,会发生什么情况?
首先,您需要获取一个CSFR令牌,并使用--cookie-jar将信息保存在cookie中

请求

用户名:密码:http://localhost:8080/crumbIssuer/api/json

响应

如果您有任何问题,请与我们联系。"搜索请求字段":"Jenkins-克鲁姆"}
然后,我们可以使用--cookie读取cookie并生成新令牌:

请求

用户名:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码:密码

响应

{"状态":"正常","数据":{"令牌名称":"我的Android令牌"、"tokenUuid":"令牌值":"""""""

xkrw2x1b

xkrw2x1b4#

如何生成Jenkins API标记

以下命令需要curl和jq。请在同一会话中执行它们。

# Change the following appropriately
JENKINS_URL="http://localhost:8080"
JENKINS_USER=admin
JENKINS_USER_PASS=admin

"去拿面包屑"

JENKINS_CRUMB=$(curl -u "$JENKINS_USER:$JENKINS_USER_PASS" -s --cookie-jar /tmp/cookies $JENKINS_URL'/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')

获取访问令牌

ACCESS_TOKEN=$(curl -u "$JENKINS_USER:$JENKINS_USER_PASS" -H $JENKINS_CRUMB -s \
                    --cookie /tmp/cookies $JENKINS_URL'/me/descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken' \
                    --data 'newTokenName=GlobalToken' | jq -r '.data.tokenValue')

连续API调用

您需要使用带有用户名沿着生成的crumb的令牌,而不是密码。

curl -u $JENKINS_USER:$ACCESS_TOKEN \
     -H $JENKINS_CRUMB \ ..........

相关问题