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用户认证方式的更多相关文章

  1. 关于RESTFUL API 安全认证方式的一些总结

    常用认证方式 在之前的文章REST API 安全设计指南与使用 AngularJS & NodeJS 实现基于 token 的认证应用两篇文章中,[译]web权限验证方法说明中也详细介绍,一般 ...

  2. 关于 RESTFUL API 安全认证方式的一些总结

    常用认证方式 在之前的文章REST API 安全设计指南与使用 AngularJS & NodeJS 实现基于 token 的认证应用两篇文章中,[译]web权限验证方法说明中也详细介绍,一般 ...

  3. RESTFUL API 安全认证方式

    一般基于REST API 安全设计常用方式有: HTTP Basic Basic admin:admin Basic YWRtaW46YWRtaW4= Authorization: Basic YWR ...

  4. laravel Passport - 创建 REST API 用户认证以及Dingo/Api v2.0+Passport实现api认证

    第一部分: 安装passport 使⽤ Composer 依赖包管理器安装 Passport : composer require laravel/passport 接下来,将 Passport 的服 ...

  5. Laravel 5.5 使用 Jwt-Auth 实现 API 用户认证以及刷新访问令牌

    最近在做一个公司的项目,前端使用 Vue.js,后端使用 Laravel 构建 Api 服务,用户认证的包本来是想用 Laravel Passport 的,但是感觉有点麻烦,于是使用了 jwt-aut ...

  6. (73)zabbix用户认证方式 内建、HTTP Basic、LDAP

    公司大大小小众多系统,不同系统不同的账号密码,管理上相当复杂,后来慢慢出现了SSO等账号统一验证,其他zabbix也提供了类似的方法,或许有些公司便可以使用公司提供的账号来登录zabbix了. zab ...

  7. C# Ftp方式下载文件(无用户认证方式,支持断点续传)

    类代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys ...

  8. Laravel核心解读 -- 扩展用户认证系统

    扩展用户认证系统 上一节我们介绍了Laravel Auth系统实现的一些细节知道了Laravel是如何应用看守器和用户提供器来进行用户认证的,但是针对我们自己开发的项目或多或少地我们都会需要在自带的看 ...

  9. centos7下利用httpd2.4配置svn并使用Ldap用户认证

    应用场景:Windows下有AD活动目录,类Unix系统下有Ldap,在运维开发工具平台逐步丰富的现在,统一用户管理大大便捷了管理人员. 其中不乏经典版本控制管理工具svn,与Ldap组合的用户认证方 ...

  10. Apache用户认证、域名跳转、Apache访问日志

    5月29日任务 课程内容: 11.18 Apache用户认证11.19/11.20 域名跳转11.21 Apache访问日志扩展 apache虚拟主机开启php的短标签 http://ask.apel ...

随机推荐

  1. SQL SERVER 同一台服务器,A库正常连接,B库提示“等待的操作过时”

    SQL SERVER 同一台服务器,A库正常连接,B库提示"等待的操作过时" 解决方法: 在客户端(非SQL SERVER 服务器)用管理员身份运行CMD,输入netsh wins ...

  2. .NET FRAMEWORK Entity Framework,EF 手动DB FIRST,不使用设计器

    环境: VS2019 SQL SERVER 2012 一.在数据库(db1)创建表结构 "db1"是数据库名,"Table1"是表名. USE [db1] GO ...

  3. ssh进阶

    1.ssh客户端工具 查看参数和帮助方法 ==ssh --help== ==man ssh== 常见参数 windows linux macos 提供的ssh命令,会有些区别,查看帮助后使用即可. l ...

  4. Android开发基础——真机测试错误,ADB启动不了,程序安装不了,the connection to adb is down,INSTALL_CANCELED_BY_USER...

    在Android开发中,无论是真机测试还是AVD测试,都会报出这些错误.在这里,我会详细说明一下怎么会出现这些错误的,然后要怎么样才能解决这些错误. 错误一: The connection to ad ...

  5. idea编译报错 Lombok运行测试类报错 jar依赖冲突解决

    idea编译报错 Lombok运行测试类报错 jar依赖冲突解决 1.现象是idea编译,运行项目的时候是没有问题,可以正常跑起来.2.运行junit测试类的时候,报错提示 lombok找不到类,解决 ...

  6. C# 循环枚举

    foreach (int eemun in Enum.GetValues(typeof(类名))) { string sName = Enum.GetName(typeof(类名), eemun);/ ...

  7. STM32 CubeMX 学习:004-PWM

    背景 上一讲,我们介绍了 STM32 CubeMX 学习:定时器 ,并示范了如何使用定时器来定时.这一讲我们来试试PWM(Pulse Width Modulation, 脉冲宽度调制),这是利用微处理 ...

  8. 【仿真】Carla简易安装 Window Ubuntu均适用 附ROS的简单连接 [0]

    参考与前言 CARLA Documentation 官方文档 后续链接:[仿真]Carla介绍与使用 [1] 本篇创建于 2020/12/18,安装方式为压缩包安装,无需UE4等软件,但是前提是需要一 ...

  9. 实测14us,Linux-RT实时性能及开发案例分享—基于全志T507-H国产平台

    本文带来的是基于全志T507-H(硬件平台:创龙科技TLT507-EVM评估板),Linux-RT内核的硬件GPIO输入和输出实时性测试及应用开发案例的分享.本次演示的开发环境如下: Windows开 ...

  10. 手把手带你使用JWT实现单点登录

    JWT(英文全名:JSON Web Token)是目前最流行的跨域身份验证解决方案之一,今天我们一起来揭开它神秘的面纱! 一.故事起源 说起 JWT,我们先来谈一谈基于传统session认证的方案以及 ...