码云的 WebHook 支持两种验证方式,一种是明文密码验证,另外一种是密钥验证

用户通过配置不公开的 WebHook 密钥,在请求时对请求内容签名,服务端在收到请求后以同样的密钥进行签名验证,以确认收到的请求完整且可信任。

整个过程 WebHook 密钥只存在于 Gitee 和服务端,不在网络传输中暴露。

那么 PHP 应该如何验证呢?文档只提供了 Java 和 Python2 的示例代码,我大 PHP 不配验证?

文档中说明了对应的参数:需要一个 timestampsecret,这两个参数从哪来呢?

从请求头中获取,我这里以 Swoole 的 HTTP Server 为例

$signature = $header['x-gitee-token'] ?? '';
$timestamp = $header['x-gitee-timestamp'] ?? '';

获取到所需要的参数之后来看一下具体步骤:

Step1:把timestamp+"n"+密钥当做签名字符串,使用HmacSHA256算法计算签名。
Setp2:对上述得到的结果进行Base64 encode
Setp3:对上述得到的结果进行urlEncode,得到最终的签名(需要使用 UTF-8 字符集)。

官方文档一不注意就入了坑,文档需要 urlEncode 是因为要拼接到 URL 中,实际验证时是不需要的

不能想着直接反推回去验证,而且 HmacSHA256 不支持反推,我们只能自己生成验证对比进行验证

所以我们可以得到这样的代码:

$signature = $header['x-gitee-token'] ?? '';
$timestamp = $header['x-gitee-timestamp'] ?? '';$secret = '123456'; // 所配置的密钥信息
$secret_str = "$timestampn$secret";
$compute_token = base64_encode(hash_hmac('sha256', $secret_str, $secret, true));
if ($signature !== $compute_token) {echo '验证失败';
}

最后,可以直接使用我的git-deploy项目

gpg 中标麒麟获取 密钥失败_PHP实现码云Gitee的WebHook密钥验证算法相关推荐

  1. gpg 中标麒麟获取 密钥失败_中标麒麟下软件源配置

    中标麒麟7.0默认软件源配置是错误的,所以我们需要进行修改.流程如下: 1.进入源路径 : cd /etc/yum.repos.d/ 2.删除所有原有源 : sudo rm -f * 3.查看当前路径 ...

  2. Jenkins 流水线 获取git 分支列表_jenkins的安装和配置 自动化部署 码云 gitee

    目前项目使用的jenkins 自动化部署的还是比较多的 ,所以趁着脑瓜子还清醒,来写一下如何使用 jenkins 使用码云更新代码后,重新构建就是最新的代码,费话不多少了 直接上货, 首先要做一下准备 ...

  3. 使用码云(Gitee)获取开源鸿蒙+欧拉系统源代码

    使用码云(Gitee)获取开源鸿蒙+欧拉系统源代码 获取开源鸿蒙系统 华为云镜像下载获取(发布版代码和最新版代码) 从码云仓库获取(主干代码) 获取开源欧拉系统 华为云镜像下载获取 从码云仓库获取 获 ...

  4. linux centos yum 报错 获取GPG密钥失败 Errno 14

    安装命令 sudo yum install docker-ce-18.03.0.ce 错误信息 安装 1 软件包 (+10 依赖软件包) 升级 ( 10 依赖软件包)总计:46 M Is this o ...

  5. 获取 GPG 密钥失败:[Errno 14] 2011-05-26 14:43

    获取 GPG 密钥失败:[Errno 14] 2011-05-26 14:43 每个 fusion源发布的稳定 RPM 软件包都配有一个 GPG 签名.默认情况下,yum 和图形更新工具验证这些签名并 ...

  6. CentOS 7安装zabbix-agent 5.0报错:依赖检测失败:libpcre.so.0()(64bit)/获取GPG密钥失败解决

    报错信息: [root@localhost ~]# wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/6/x86_64/ ...

  7. php post 微信沙箱,微信支付平台错误:获取沙箱密钥失败,确保交易密钥是

    按官方提示进行获取沙箱密钥的时候,久试不爽,总是提示错误 :"获取沙箱密钥失败,确保交易密钥是否正确".这个纯粹是微信平台挖的坑呀,文档没有详细的进行一些讲解,也没有提示需要key ...

  8. QGIS与国产操作系统兼容性测试(Deepin、优麒麟、中标麒麟)

    三款国产操作系统使用初步体验一文从操作系统易用性.生态完整性.软件包获取难易程度等方面考察其是否满足日常办公需求.然而对我来说,QGIS是日常最常用的软件之一, QGIS与操作系统的兼容性尤其重要,于 ...

  9. 中标麒麟linux7下安装dm8

    ** 中标麒麟linux7下安装dm8 ** 1.安装前准备工作 1.1检查操作系统信息 获取系统位数 [root@dm01 ~]# getconf LONG_BIT 查询操作系统release信息 ...

最新文章

  1. 什么是BS结构、CS结构、RIA结构程序
  2. ubuntu linux kvm安装,基于Ubuntu 14.04 KVM拟化安装部署
  3. xBIM 基础16 IFC的空间层次结构
  4. BootStrap笔记-文字排版
  5. eclipse.jsp文件放哪_来自小师弟的灵魂拷问之数据泵导出丢失的那些数据量去哪了?...
  6. 爆牙齿的Web标准面试考题II(iPhone SMS/iChat UI的Web标准实现)
  7. 《中国人工智能学会通讯》——第12章 12.1 新世纪知识工程—— 在哪里跨越
  8. 颠覆传统-面向对象的设计思想(序章续)
  9. Java毕设项目在线购书商城系统计算机(附源码+系统+数据库+LW)
  10. 共享打印机服务器脱机状态,共享打印机脱机无法打印
  11. Java中sqrt的抬头,Java Math.sqrt()方法
  12. 如何查计算机硬盘型号,win10电脑的硬盘型号如何查看
  13. db2检查什么表被锁住了,如何解锁
  14. 2019 未能正确加载ExtensionManagerPackage
  15. 深入学习 esp8266 wifimanager源码解析(打造专属自己的web配网)(最全的wifimanager介绍))
  16. 2549. 删除他们! 解题报告
  17. USB | 1. 技术演进及测试概览
  18. 使用同花顺F10查看个股概况!股票量化分析工具QTYX-V2.1.9
  19. mysql lag和lead_Oracle的LAG和LEAD分析函数
  20. 安卓自定义音量键_iPhone越狱丨利用安卓手机为你的iPhone越狱!

热门文章

  1. mysql 数据库复制软件_mysql 快速复制数据库
  2. 服务器搜索文件命令,Centos文件搜索命令的讲解
  3. mysql哪个版本和x86兼容_[C++]C++连接MySQL,封装为class(兼容x86和x64)
  4. pg 日期和时间的运算操作
  5. oracle 静默 建库,静默安装Oracle 11gR2软件并且手动建库
  6. 使用Q查询设计搜索框
  7. 使用EL表达式,显示Action中的数据
  8. Kafka系列之-Kafka Protocol实例分析
  9. iOS谁说我不能执行你
  10. BZOJ 1688: [Usaco2005 Open]Disease Manangement 疾病管理