api平台通用签名机制
通用API平台需要对每一个访问请求进行身份验证。
借鉴阿里云的SDK。
用户机制
API平台里的每一个用户有自己的uid。
每一个用户可以有一个或者多个appKey和appSecret。即一组appKey和appSecret标记一个应用。
其中appKey用来管理权限。【唯一】(24位随机字符串)(lumen里可以使用str_random()生成)
appSecret用来签名。(32位随机字符串)(lumen里可以使用str_random()生成)
appKey为每次请求必传的参数
签名规则
排序请求字符串
对所有的请求参数,按照参数名称的字典顺序进行排序参数编码
对所有的请求参数的键值相连接然后进行RFC3986规则进行编码
编码规则为:
对于字符 A-Z、a-z、0-9 以及字符 - 、 _ 、 . 、 ~ 不编码。
对于其他字符编码成 %XY 的格式,其中 XY 是字符对应 ASCII 码的 16 进制表示。比如半角的双引号 ” 对应的编码就是 %22 。
对于扩展的 UTF-8 字符,编码成 %XY%ZA… 的格式。
需要说明的是半角的空格要被编码是 %20 ,而不是加号 + 。
注意:一般支持 URL 编码的库(比如 PHP 中的 urlencode )都是按照 application/x-www-form-urlencoded 的 MIME 类型的规则进行编码。可以直接使用这类方式进行编码,把编码后的字符串中加号 + 替换成 %20 、星号 * 替换成 %2A 、 %7E 替换回波浪号 ~ ,即可得到上述规则描述的编码字符串。构造用于计算签名的字符串
StringToSign=
//get或者post
HTTPMethod +
编码后的参数
- 计算HMAC值
按照 RFC2104 的定义,使用步骤 3 得到的字符串 StringToSign 计算签名 HMAC 值。
注意:计算签名时,使用的 Key 就是您的 appSecret,使用的哈希算法是 SHA1。 - 计算签名
按照 Base64 编码规则,把步骤 3 得到的 HMAC 值编码成字符串,即得到签名值(Signature)。 - 将签名作为signature参数添加到请求中
签名代码 PHP版本
//1.排序参数
ksort($parameters);
//2.对参数进行URL编码
$paramsStr = '';
foreach ($parameters as $k => $v) {$paramsStr .= $k . $v;
}
$res = urlencode($paramsStr);
$res = preg_replace('/\+/', '%20', $res);
$res = preg_replace('/\*/', '%2A', $res);
$res = preg_replace('/%7E/', '~', $res);
//3.构造计算签名的字符串
$stringToSign = $request->getMethod() . $res;
//4.计算HMAC值
$hmacStr = hash_hmac('sha1', $stringToSign, $appSecret, true);
//5.返回签名值
$signature = base64_encode($hmacStr);
api平台通用签名机制相关推荐
- 微信公众平台通用接口API指南
下述文档已过期,新版文档请访问 http://www.cnblogs.com/txw1958/p/weixin-access-token.html 微信公众平台目前分成消息接口和通用接口两大模块. 接 ...
- E码通电子凭证服务平台 通用接口接入规范
E码通电子凭证服务平台 通用接口接入规范 E码通电子凭证服务平台 通用接口接入规范 V 1.0 文档变更记录 版本 日期 变更内容 操作者 备注 V 1.0 2011-05-05 创建 Bill 初始 ...
- 【Android安全】Android app开发者证书和代码签名机制
参考链接: 安卓证书相关验证机制: https://duanqz.github.io/2017-09-01-Android-Digital-Signature (部分内容不准确) 关于META-INF ...
- NAS聪明如人? 如何自己寻找答案!道翰天琼认知智能机器人API平台接口为您揭秘。
NAS聪明如人? 如何自己寻找答案!道翰天琼认知智能机器人API平台接口为您揭秘. 近期,神经网络结构搜索 (NAS)引起了学界和工业界的高度关注.目前,NAS已在很多任务(尤其是CV相关任务)上得到 ...
- 微信公众平台开发教程(九)微信公众平台通用开发框架
微信公众平台开发教程(九)微信公众平台通用开发框架 一.思考 开发了几个微信项目,一直在思考: 如何将微信相关的处理与业务系统联系在一起? 如何做到彼此分离,且易于扩展? 能否开发一套独立的微信服务框 ...
- 比特币多重签名机制使用篇
原文链接:http://www.wanbizu.com/baike/201408191710.html 概述 比特币的多重签名机制可以实现多方共同管理资产,也可以用于第三方交易担保. 多重签名最多支持 ...
- springboot接口签名统一效验_Python如何接入开放平台?签名验签、加密解密、授权认证测试实战...
当前大型top企业都有非常成熟的开放平台业务,比如微信开放平台.新浪微博开放平台.支付宝开放平台等.开放平台的发展为第三方个人或企业提供了巨大的机遇.开发者想要接入各大开放平台,必须要遵从开放平台的安 ...
- 区块链中的数学 - EdDSA签名机制
Ed25519 使用了扭曲爱德华曲线,签名过程和之前介绍过的 Schnorr,secp256k1, sm2 都不一样,最大的区别在于没有使用随机数,这样产生的签名结果是确定性的,即每次对同一消息签名结 ...
- ios keychain 不被清理_iOS签名机制和说明文件【ios企业签名吧】
IOS签名机制和配置文件.iOS签名机制的作用:保证安装在手机上的应用程序经苹果公式验证和许可.无论是真机调试还是发布App,开发人员都必须经过一些复杂的步骤.以下广州贝壳技术将详细说明. 贝壳科技( ...
最新文章
- Web服务器 之 Apache 2.x 服务器中的URL重写的配置和应用
- python 读excel中一个表_python – pandas read_excel在同一张表上的多个表
- openstack中glance组件images的全部python API 汇总
- 5.中文问题(自身,操作系统级别,应用软件的本身),mysql数据库备份
- ajax回调给全局变量,jquery.Ajax回调成功后数据赋值给全局变量的问题
- ViewPager 详解(二)---详解四大函数
- iPhone 12性能首曝:6GB内存、A14“挤牙膏”
- ArcPy常用类介绍
- BWA关于Unmatched SAI magic. Please re-run `aln' with the same version of bwa.
- 湖南华容县职业中专学校创客实训室
- pano2vr怎么制作漫游_如何制作全景图?Pano2VR制作FLASH全景图教程
- 中山公园再添一座新地标,青岛首家丛林书吧“林荫阅读室”
- linux4 系统下载,SysLinux 4.0.4 下载
- Flutter流畅性fps计算
- 最全最详细的蓝牙版本介绍包含蓝牙4.0和4.1
- Android7.0(mtk)开放root权限,adb root和app root
- Anuglar8集成高德地图
- Python学习笔记(八)—切片(slicing)
- 互联网寒冬下如何过冬?厚积薄发还是直接开摆?我选这个
- layui框架学习(4:导航)