API签名技术方案 ¶

RESTful API面向公共开放时候,除了性能之外安全也是很重要的, 本方案主要目的是解决它所面临的安全挑战

实现原理 ¶

通过对访问API的每个请求进行签名,使得每次请求都是可信的,而且是不可伪造的,他的大致流程是这样的:

../_images/signature_flow.png
  • API Signature,每次Client端请求时都进行签名,并将签名信息放入Request Headers一同发送到Server
  • Check Signature,Server段收到请求后,使用同样的签名策略生成签名信息,并与Client发来的进行比对
  • 比对签名成功,Server正常处理该请求,否则response相关错误信息到Client
  • Client得到reponse content,并展现相关信息

如此看来Signature的过程是重中之重了,它的生成总共分为三步:

../_images/api_signature.png

假定我们有一个http request的消息体是这样的:

curl -i -X POST http://127.0.0.1:9898/v1/zabbix -H "X-Auth-Token: 1cb9337742733ccd8482167609266ae6" \
    -H "X-Neunn-UUID: 7eebe000a41a485eb6535e9b5aba9310" \
    -H "X-Neunn-Sign: 313ccf919e4f42faa30d69cc3727b907" \
    --data "{'output': 'extend', 'host': '20.20.20.34', 'application': 'Memory'}"

---Header---
POST /v1/zabbix HTTP/1.0
Accept: application/json
Accept-Encoding: gzip, deflate, compress
Content-Length: 68
Content-Type: application/json
Host: 127.0.0.1:9898
X-Auth-Token: 1cb9337742733ccd8482167609266ae6
Date: Fri, 28 Feb 2014 06:25:24 GMT
X-Neunn-UUID: 7eebe000a41a485eb6535e9b5aba9310
X-Neunn-Sign: 313ccf919e4f42faa30d69cc3727b907

---Body---
{"output": "extend", "host": "20.20.20.34", "application": "Memory"}

相关说明:

  • HTTP verb,该请求是POST方法
  • URL,不解释
  • Query String,Get方法就是请求的参数,Post就是请求的Body部分,对于Get请求注意要排序后再拼接
  • TimeStamp,采用ISO8601标准,Client与Server都是用Header中Date的值进行转换使用
  • SigningKey,这个key相当于签名的钥匙,可以考虑使用md5(password),更安全的作法是使用Hash算法独立生成
  • HMAC-SHA256,一种签名算法,使用它主要是参考aws
  • X-Neunn-UUID,Server端用来反查SigningKey
  • X-Neunn-Sign,Client生成的签名信息,传入Server用于比对签名

FQA ¶

  1. Client是如何拥有UUID和SigningKey的:

    通常使用SDK开发时,UUID和SigningKey是可以直接发放给用户使用的,
    也可用使用username和password通过Https请求获取。
    
  2. 如果我们没有使用HTTPS,而且消息体被截获,那么怎么保证API不被恶意调用,所谓的中间人攻击:

    Server端可以对TimeStamp进行校验,比如可以超过Date值5min的请求,被终止调用,这样可以在被攻击的时候减少损失。
    
  3. 如此多的加密签名计算过程,是否对整体访问性能有影响:

    有影响是必须的,安全和快速是矛盾的!
    

Table Of Contents

  • API签名技术方案
    • 实现原理
    • FQA

Previous topic

资源池物理主机分组方案

Next topic

租户用户体系设计方案

This Page

哆哆女性网爱尚面加盟百舌鸟正字起名武汉材料保护研究所的八画字起名起名梓的表示傅姓取名起名给医药器械公司起名写给钻石戒指起名字午夜梦回遇龙电视剧免费观看全集安康网公司免费起名测名网魔兽争霸3c地图毓婷给西部小朋友一封信男孩起名大全带寓意新疆公安厅鬼父3十分爱3.5mm耳机接口神话官网诗经起女孩名字你的名字高清百度云古诗词起公司名世界各国人口建议取消1至3年级家庭作业寓意较好的诗句起名字少年英雄方世玉电视剧魂斗罗30条命时光与你都很甜免费全集观看淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化