jenkins # [2.129+]版本之后,出于安全性考虑修改了API Token的规则,官方说明:Security Hardening: New API token system in Jenkins 2.129+
这个改变包括:
- Token的生成存储规则(使用SHA-256单向加密算法,意味着不可反推,关于SHA-256 下文会有简略说明)
- 使用规则 (可以同时为不同的使用场景生成各自的token, token一旦生成,必须要自行保存,之后在配置页面上不可再查看。你最好像保存密码一样把它保存起来。)
所以如果你的Jenkins版本大于2.129,那么除非你已经知道当前user的一个token,否则可以到user下的配置里去为你的应用生成新的api token:
比如我是admin user:
admin->configuration:
http://localhost:8080/user/admin/configure
jenkins已经在黄色字体里跟你提示了, 这个token你要自己找个地儿保存起来,以后你再也看不到了,就像上面的token-for-project1, 你只能看到token名字,看不到token值。
有些人打开来可能看到的是下面这样的,有个Legacy Token(旧版token), 而且你还能点击Show Legacy API Token来查看旧版的token, 这个是jenkins系统为了让部分老系统度过这个迁移阶段特地存留的功能。建议删除legacy token,使用新版Token更为安全。
======参阅与摘取=======
https://www.jenkins.io/blog/2018/07/02/new-api-token-system/
关于API这个改动的官方解释:
以及legacy token的解释:
image.png
关于SHA-256是个单向不可逆推反算的算法:
参考:
单向散列
单向散列算法,又称hash函数(杂凑函数,或者杂凑算法),就是把任意输入消息字符串变成固定长的输出串的一种函数,这个输出串称为该消息的杂凑值,一般使用产生消息摘要,密钥加密等。具体指的是根据输入消息计算后,输出固定长度数值的算法,输出数值也成为“散列值”或消息摘要,其长度通常在128~256位之间。
输入的长度可以是任意的
输出长度是固定的,根据目前的计算技术应至少取128bit长,以便抵抗生日攻击
对每一个给定的输入,计算输出(即杂凑值)是很容易的。
给定杂凑函数的描述,找到两个不同的输入消息杂凑到同一个值是计算上不可行的,或给定杂凑函数的描述和一个随机选择的消息,找到另一个与该消息不同的消息使得他们杂凑到同一个值是计算上不可行的。
所有的加密算法是公开的
具备单向性,不可以逆推反算
- SHA-256在比特币上的应用
https://www.bibobao.com/view/12650
使用SHA-256的优势:
这个公式有两个有趣又实用的特点:
首先,如果你得到了同样的哈希值,或者说是数字指纹,就是因为你输入了完全相同的输入值,两个不同的输入值不会得出同一个输出值(数字指纹)。
那哈希值数量有多少呢——2的256次方。
另一个有趣的特点是蝴蝶效应,只要输入值改变一点点输出值就会变。举个例子,我现在拍一张照片,像素:1000×1000.文件长度:2400万位,用SHA 256算法来运行一下,得出一个哈希值。现在来改变输入值中的某一个小单位,放大这个电线杆的像素,把绿色值的0改为1.重新用SHA 256算法运行一遍,就得到一个完全不同的输出值,这还只是改变了2400万单位中的一个。
网友评论