RESTful API 签名认证框架 HTTP Sign

码农软件 · 软件分类 · REST/RESTful项目 · 2019-03-10 16:44:38

软件介绍

HTTP Sign 是一个RESTful API 签名认证项目。
该项目将解决HTTP通信中的如下问题:

  • 防止重放攻击

  • 防止中途篡改数据

  • 保证请求服务幂等

从而,尽可能地让 HTTP 通信接近安全。

HTTP Sign 的设计

字面约定

字面格式含义
< >变量
[ ]可选项
{ }必选项
|互斥关系
标点符号本文一律采用英文标点符号

请求参数名,命名规则

  1. 首字母小写,如果名称由多个单词组成,每个单词的首字母要大写

  2. 英文缩写词一律小写

  3. 只能由 [A~Z]、[a~z]、[0~9] 以及字符"-"、"_"、"." 组成参数名

  4. 不能以数字开头

  5. 不允许出现中文及拼音命名

术语表

术语全称中文说明
RSRESTful Web ServicesWEB REST服务REST 架构风格的Web服务
SecurityGroupSecurity Group安全组安全组制定安全策略
GMTGreenwich Mean Time格林尼治标准时间指位于英国伦敦郊区的皇家格林尼治天文台的标准时间
URIPathUniform Resource Identifier Path统一资源标识符的路径用于标识某一互联网资源路径
RFCRequest For Comments一系列以编号排定的文件几乎所有的互联网标准都有收录在RFC文件之中

相关名词解释

  1. 字典升序排列
    如同在字典中排列单词一样排序,按照字母表递增顺序排列,参与比较的两个单词,若它们的第一个字母相同,就比较第二个字母,依此类推.
    例如: zhong zhang zheng zhen, 做字典升序排列后的结果是 zhang zhen zheng zhong.

  2. 幂等性
    接口在设计上可以被完全相同的URL重复调用多次,而最终得到的结果是一致的.

使用限制

请求端的当前时间与服务器的当前时间之差的绝对值不能大于10分钟,否则拒绝处理. 也就是说,请求端的时间不能比服务器时间快10分钟或慢10分钟,否则,服务器不受理.

请求结构

  1. 服务地址
    接口按照功能划分成了不同的功能模块,每个模块使用不同的域名或上下文访问,具体域名或上下文请参考各个接口的文档.

  2. 通信协议
    所有接口均采用HTTPS通信.

  3. 请求方法
    支持 [GET,POST,PUT,DELETE,PATCH,HEAD,OPTIONS].

  4. 字符编码
    在无特别说明情况下,均使用UTF-8编码.

  5. API请求结构

    名称描述备注
    API入口API调用的RS服务的入口https://<domain>/path/hi
    公共header每个接口都包含的通用请求头详见 公共参数
    公共参数每个接口都包含的通用参数详见 公共参数

公共参数

公共请求头(Common Request Headers)

名称是否必选描述
Authorization用于验证请求合法性的认证信息
Accept默认:"application/json",表示发送端(客户端)希望从服务端接受到的数据类型
Content-LengthRFC2616中定义的HTTP请求内容长度(一般的http客户端工具都会自动带上这个请求头)
DateHTTP 1.1协议中规定的GMT时间,例如:Wed, 28 Mar 2018 09:09:19 GMT
Host访问Host值(一般的http客户端工具都会自动带上这个请求头)

公共请求参数(Common Http Request Parameters)

名称是否必选类型描述
versionStringAPI 版本号,当前值为1
actionString接口的指令名称,如:action=myInfo
nonceString随机数,长度范围[8,36]
accessKeyIdString在云API密钥上申请的标识身份的 accessKeyId,一个 accessKeyId 对应唯一的 accessKeySecret , 而 accessKeySecret 会用来生成请求签名 Signature
signatureMethodString签名算法,目前支持HMACSHA256和HMACSHA1.默认采用:HMACSHA1验证签名
tokenString临时证书所用的Token,需要结合临时密钥一起使用

服务端将从 QueryString 获得这些参数。

签名机制

用户在HTTP请求中增加Authorization的Header来包含签名(Signature)信息,表明这个消息已被签名,认证是否通过,服务端说了算。

本文地址:https://codercto.com/soft/d/1052.html

Python网络编程攻略

Python网络编程攻略

萨卡尔 (Dr.M.O.Faruque Sarker) / 安道 / 人民邮电出版社 / 2014-12-1 / 45.00元

开发TCP/IP网络客户端和服务器应用 管理本地设备的IPv4/IPv6网络接口 使用HTTP和HTTPS协议编写用途多、效率高的Web客户端 编写可使用常见电子邮件协议的电子邮件客户端 通过Telnet和SSH连接执行远程系统管理任务 使用Web服务与流行的网站交互 监控并分析重要的常见网络安全漏洞一起来看看 《Python网络编程攻略》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具