Jenkins API用户认证方式
1、概述
Jenkins的API可以通过用户名+密码或者用户名+Token的方式来进行认证,这篇文章以具体示例来说明具体的使用方式。
2、Jenkins环境
本文示例基于Jenkins 2.452.3版本进行演示,详细的环境构建可参考《Centos7下安装配置最新版本Jenkins(2.452.3)》这篇博文。
3、Jenkins API用户认证方式
在《Jenkins如何使用CrumbIssuer防御CSRF攻击》的深入探讨中,我们不仅详细剖析了Jenkins的跨站请求伪造防护机制,还实际演示了通过用户名结合密码以及用户名结合Token两种方式来进行Jenkins API的调用。为了进一步加深理解,本文将对这两种认证方法——即使用用户名加密码,以及用户名加Token的方式——进行更为详尽的阐述与说明。
3.1 传入用户名和密码
调用接口前,先确保调用接口传递的用户名及用户密码的正确性。

以curl客户端为例,使用-u方式传入用户名和密码, 获取当前用户的Crumb。
curl -s -u zmc:123456 http://10.20.31.153:8080/jenkins/crumbIssuer/api/json
{"_class":"hudson.security.csrf.DefaultCrumbIssuer","crumb":"1fc9fb418bb0f908903593c06981ec9881d69eec3202190813de724cbf77451e","crumbRequestField":"Jenkins-Crumb"}%
3.2 用户名+密码方式(URL)
URL中将用户名和密码嵌入其中,格式为用户名:密码@JenkinsURL,也可以实现相同效果。
curl -s http://zmc:123456@10.20.31.153:8080/jenkins/crumbIssuer/api/json
{"_class":"hudson.security.csrf.DefaultCrumbIssuer","crumb":"a91a4cec96c751651abb1350164dca3ab0b87444f588f0d06ba51e1813c96c69","crumbRequestField":"Jenkins-Crumb"}%
3.3 传入用户名和Token
用户只能为自己颁发API Token,比如现在登陆用户是admin,它是不能为其他用户颁发API Token。

用户登陆Jenkins UI界面,并进行API Token颁发。

可以为不同应用颁发不同Token,可以对颁发Token进行删除操作。

只有创建时候能看到Token!!!刷新页面后看不到Token值。

以curl客户端为例,使用-u方式传入用户名和Token, 获取当前用户的Crumb。
curl -s -u zmc:1126edb3c4127702f5a754a4d53065b56e http://10.20.31.153:8080/jenkins/crumbIssuer/api/json
{"_class":"hudson.security.csrf.DefaultCrumbIssuer","crumb":"c4641813237a41c1d6e26e3d1afecfcbc1eebc019cf169b45994a9d2c947d438","crumbRequestField":"Jenkins-Crumb"}%
一定要注意,Token 并不是 Jenkins 的 API 所独特提供的功能,在使用中一定要保证 Token 的安全性与灵活性:
粒度: 不同的应用使用不同的 Token,这样的好处在于对于应用级别的权限进行回收等需求的时候不至于影响到其他应用。
获取: Token 的信息只有在创建的时候才能看到一次,忘记了 Token 的信息等于忘记了密码,不建议提供查看 Token 具体信息的功能,因为这样相当于有一个权限可以查看到所有用户的 Token,此用户权限一旦丢失,相当于所有用户的 Token 信息都存在丢失的风险,而且用户本身无法察觉。一旦忘记,删除此 Token,重新生成 Token 进行使用。
更新: 定期的更新Token(比如每半年,需要根据实际的安全需求) ,Token 在使用期限上进行管理,这种方式会更加安全。
保护: Token 就等同于用户的密码,获得 Token 就获得了以所属用户身份进行操作的权限,自然对于 Token 的保护也要像您的密码一样谨慎。
回收: 对于不再使用的 Token,建议及时地回收,可以预防安全上的风险。
4、总结
本博文深入探讨了Jenkins API的两种主要用户认证方式:使用用户名与密码以及使用用户名与Token。推荐使用用户名与Token进行API认证:
(1)安全性方面:
减少密码泄露风险:用户名与密码的组合方式在多个系统和应用中广泛使用,一旦密码泄露,可能会影响到多个系统的安全。而Token是专门为特定应用或服务生成的,即使泄露,其影响范围也相对较小。
可撤销性:如果Token泄露或不再需要,可以轻松地将其删除或禁用,而无需更改用户的密码。
(2)易用性方面:
一次性配置:用户只需在Jenkins UI中生成一次Token,并在需要的地方使用即可。无需频繁地输入或管理密码。
减少错误:由于Token通常较长且复杂,通过编程方式(如脚本或自动化工具)使用时,可以减少因密码输入错误而导致的认证失败。
(3)应用场景方面:
- 对于需要频繁调用Jenkins API的自动化脚本或工具,使用Token进行认证更为合适。这不仅可以提高安全性,还可以方便地管理权限和Token的生命周期。
- 如果Jenkins API的调用仅限于少数几个受信任的系统或用户,并且这些系统或用户已经通过其他方式进行了身份验证(如IP白名单、VPN等),那么使用用户名与密码进行认证也是可行的,但务必确保密码的复杂性和存储的安全性。
综上所述,推荐使用用户名与Token进行Jenkins API认证。这种方式不仅提高了安全性,还便于Token的管理。当然,在实际应用中,还需要根据具体情况进行权衡和选择。
Jenkins API用户认证方式的更多相关文章
- 关于RESTFUL API 安全认证方式的一些总结
常用认证方式 在之前的文章REST API 安全设计指南与使用 AngularJS & NodeJS 实现基于 token 的认证应用两篇文章中,[译]web权限验证方法说明中也详细介绍,一般 ...
- 关于 RESTFUL API 安全认证方式的一些总结
常用认证方式 在之前的文章REST API 安全设计指南与使用 AngularJS & NodeJS 实现基于 token 的认证应用两篇文章中,[译]web权限验证方法说明中也详细介绍,一般 ...
- RESTFUL API 安全认证方式
一般基于REST API 安全设计常用方式有: HTTP Basic Basic admin:admin Basic YWRtaW46YWRtaW4= Authorization: Basic YWR ...
- laravel Passport - 创建 REST API 用户认证以及Dingo/Api v2.0+Passport实现api认证
第一部分: 安装passport 使⽤ Composer 依赖包管理器安装 Passport : composer require laravel/passport 接下来,将 Passport 的服 ...
- Laravel 5.5 使用 Jwt-Auth 实现 API 用户认证以及刷新访问令牌
最近在做一个公司的项目,前端使用 Vue.js,后端使用 Laravel 构建 Api 服务,用户认证的包本来是想用 Laravel Passport 的,但是感觉有点麻烦,于是使用了 jwt-aut ...
- (73)zabbix用户认证方式 内建、HTTP Basic、LDAP
公司大大小小众多系统,不同系统不同的账号密码,管理上相当复杂,后来慢慢出现了SSO等账号统一验证,其他zabbix也提供了类似的方法,或许有些公司便可以使用公司提供的账号来登录zabbix了. zab ...
- C# Ftp方式下载文件(无用户认证方式,支持断点续传)
类代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys ...
- Laravel核心解读 -- 扩展用户认证系统
扩展用户认证系统 上一节我们介绍了Laravel Auth系统实现的一些细节知道了Laravel是如何应用看守器和用户提供器来进行用户认证的,但是针对我们自己开发的项目或多或少地我们都会需要在自带的看 ...
- centos7下利用httpd2.4配置svn并使用Ldap用户认证
应用场景:Windows下有AD活动目录,类Unix系统下有Ldap,在运维开发工具平台逐步丰富的现在,统一用户管理大大便捷了管理人员. 其中不乏经典版本控制管理工具svn,与Ldap组合的用户认证方 ...
- Apache用户认证、域名跳转、Apache访问日志
5月29日任务 课程内容: 11.18 Apache用户认证11.19/11.20 域名跳转11.21 Apache访问日志扩展 apache虚拟主机开启php的短标签 http://ask.apel ...
随机推荐
- MYSQL 连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:未将对象引用设置到对象的实例。
一: 中文提示 : 连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:未将对象引用设置到对象的实例.DbType="MySql";ConfigId=&quo ...
- javascript 生成器和迭代器
前置知识 生成器函数会返回一种称为Generator的迭代器 迭代器是一个对象,定义一个序列,并在终止时返回一个返回值 Symbol.iterator为每一个对象定义了默认的迭代器,可以被for..o ...
- leetcode | 107. 二叉树的层序遍历 II | javascript实现 | c++实现
题目 给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 . (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 思路 题目的要求相当于是求层序遍历数组的转置,我们只需利用js的 ...
- http请求方式-OkHttpClient
http请求方式-OkHttpClient import com.example.core.mydemo.http.OrderReqVO; import okhttp3.*; import org.s ...
- Python做点击率数据预测
点击率(Click-Through Rate, CTR)预测是推荐系统.广告系统和搜索引擎中非常重要的一个环节.在这个场景中,我们通常需要根据用户的历史行为.物品的特征.上下文信息等因素来预测用户点击 ...
- 使用Microsoft.SemanticKernel基于本地运行的Ollama大语言模型实现Agent调用函数
大语言模型的发展日新月异,记得在去年这个时候,函数调用还是gpt-4的专属.到今年本地运行的大模型无论是推理能力还是文本的输出质量都已经非常接近gpt-4了.而在去年gpt-4尚未发布函数调用时,智能 ...
- 《Objective-C Direct Methods》学习笔记
原文通过对Objective-C发展史.Objective-C中Runtime的动态派发,C语言的直接派发进行铺垫介绍,引出了direct methods这个"新特性"(文章写于2 ...
- 04-Python文件操作
打开文件 f=open("我的文件.txt","r",encoding="utf8") #打开一个文件(读模式) f.close() #关闭 ...
- arm linux 移植 i2c-tools 与 简单使用
介绍 i2c-tool是一个专门调试i2c的开源工具.可获取挂载的设备及设备地址,还可以在对应的设备指定寄存器设置值或者获取值等功能,对于驱动以及应用开发者比较友好. i2c-tool:v3.0.3 ...
- 基于cifar数据集合成含开集、闭集噪声的数据集
前言 噪声标签学习下的一个任务是:训练集上存在开集噪声和闭集噪声:然后在测试集上对闭集样本进行分类. 训练集中被加入的开集样本,会被均匀得打上闭集样本的标签充当开集噪声:而闭集噪声的设置与一般的噪声标 ...