Jenkins基础:API:5:用户认证方式

Jenkins的API可以通过用户名+密码或者用户名+token的方式来进行认证,这篇文章以具体示例来说明具体的使用方式。

Jenkins环境

本文示例的Jenkins的API Token是基于LTS 2.164.3版本进行演示。详细的环境构建可参看:

  • https://liumiaocn.blog.csdn.net/article/details/90679244

Job准备

事前可参看如下文章创建相关的Job,也可手动直接在Jenkins上进行操作生成。
Jenkins基础:API:5:用户认证方式_第1张图片

方式1: 传入用户名和密码

以curl客户端为例,使用-u方式传入用户名和密码, 将free_style_job的状态设定为禁用。

liumiaocn:jenkins liumiao$ curl -X POST -u root:liumiaocn -H Jenkins-Crumb:5955de6dcdcdb990b7341ead1045eb64 http://localhost:32002/job/free_style_job/disable
liumiaocn:jenkins liumiao$

从Jenkins页面也能确认此Job状态发生了变化
Jenkins基础:API:5:用户认证方式_第2张图片

方式2: 用户名+密码方式(URL)

URL中将用户名和密码嵌入其中,格式为用户名:密码@JenkinsURL也可以实现相同效果。同样以curl客户端为例,将将free_style_job_copy的状态设定为禁用。

liumiaocn:jenkins liumiao$ curl -X POST -H Jenkins-Crumb:5955de6dcdcdb990b7341ead1045eb64 http://root:liumiaocn@localhost:32002/job/free_style_job_copy/disable
liumiaocn:jenkins liumiao$ 

从Jenkins页面也能确认此Job状态发生了变化
Jenkins基础:API:5:用户认证方式_第3张图片

方式3: 用户名 + token方式

事前先为rooot用户创建tokenName同为test-token1的两个token

liumiaocn:jenkins liumiao$ curl -u root:liumiaocn -H Jenkins-Crumb:5955de6dcdcdb990b7341ead1045eb64 'http://localhost:32002/user/root/descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken' --data 'newTokenName=test-token1' 2>/dev/null |jq .
{
  "status": "ok",
  "data": {
    "tokenName": "test-token1",
    "tokenUuid": "b3d00e35-0fc5-4ca8-8212-6924cc4e7148",
    "tokenValue": "11d4332105f7c745eb0e48827579397bd9"
  }
}
liumiaocn:jenkins liumiao$ 
liumiaocn:jenkins liumiao$ curl -u root:liumiaocn -H Jenkins-Crumb:5955de6dcdcdb990b7341ead1045eb64 'http://localhost:32002/user/root/descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken' --data 'newTokenName=test-token1' 2>/dev/null |jq .
{
  "status": "ok",
  "data": {
    "tokenName": "test-token1",
    "tokenUuid": "cdcce61a-6ec0-4472-93bb-d6c79cfd376d",
    "tokenValue": "110d8a36c8e7c87c44fb69ee3dd7d430b8"
  }
}
liumiaocn:jenkins liumiao$

而刚刚创建完毕的两个token的信息都显示Never used
Jenkins基础:API:5:用户认证方式_第4张图片
以curl客户端为例,使用-u方式传入用户名和token, 将free_style_job的状态设定为启用。

liumiaocn:jenkins liumiao$ curl -X POST -u root:110d8a36c8e7c87c44fb69ee3dd7d430b8 -H Jenkins-Crumb:5955de6dcdcdb990b7341ead1045eb64 http://localhost:32002/job/free_style_job/enable
liumiaocn:jenkins liumiao$

从Jenkins页面也能确认此Job状态发生了变化
Jenkins基础:API:5:用户认证方式_第5张图片
而使用此token信息的情况也能反映了出来,虽然两个名称相同,我们所使用的token显示使用了一次(Used 1 time(s))的信息
Jenkins基础:API:5:用户认证方式_第6张图片

方式4: 用户名+token方式(URL)

URL中将用户名和密码嵌入其中,格式为用户名:token@JenkinsURL也可以实现相同效果。同样以curl客户端为例,将将free_style_job_copy的状态设定为启用。

liumiaocn:jenkins liumiao$ curl -X POST -H Jenkins-Crumb:5955de6dcdcdb990b7341ead1045eb64 http://root:11d4332105f7c745eb0e48827579397bd9@localhost:32002/job/free_style_job_copy/enable
liumiaocn:jenkins liumiao$

从Jenkins页面也能确认此Job状态发生了变化
Jenkins基础:API:5:用户认证方式_第7张图片
而Token使用的情况也发生了变化
Jenkins基础:API:5:用户认证方式_第8张图片

你可能感兴趣的:(工具)