龍巖易富通網絡科技有限公司

龍巖小程序開發,龍巖分銷系統

API權限設計總結

2015.09.10 | 984閱讀 | 0條評論 | 未命名

API權限設計總結: 最近在做API的權限設計這一塊,做一次權限設計的總結。 1. 假設我們需要訪問的API接口是這樣的:http://xxxx.com/openapi/v1/get/user/?key=xxxxx&sign=sadasdas&timestamp=2013-03-05 10:14:00&c=c&a=a&d=d 2. 接口調用的控制器:openapi/v1/get/user/ 3. 步驟一:作為服務端,首先要檢查參數是否正確:key (用戶的key) ;sign(加密的簽名串) ;timestamp (請求的時間,服務端對請求有時間生效),這些參數如果有一個參數沒傳遞,肯定返回參數不正確的結果。 4. 步驟二:參數如果都傳遞正確,這個時候需要檢查API的白名單權限,API也就是(openapi/v1/get/user/)是否存在在我們的數據庫中,一般會有一張API的數據表,如果調用的API不在我們的數據庫白名單中或者這個API已經關閉訪問了,那么要返回禁止訪問的結果。 5. 步驟三: 如果API在白名單中,那么現在就要檢查用戶的KEY是否正確了,服務端會有一張用戶權限表,這個數據表主要用來記錄用戶的key secret(密鑰) 以及API權限列表,檢查這個用戶對訪問的API(openapi/v1/get/user/)是否有權限,如果有權限則通過,沒權限則關閉。 6. 步驟四: 如果用戶權限通過,這個時候就到了最重要的一步,SIGN簽名的驗證。 簽名算法: 加密方式 md5(POST參數(升序排序,除key sign參數除外) + 用戶密鑰) PHP加密算法代碼: [php] /** * 簽名生成算法 * @param array $params API調用的請求參數集合的關聯數組,不包含sign參數 * @param string $secret 簽名的密鑰即獲取access token時返回的session secret * @return string 返回參數簽名值 */ function getSignature($params, $secret) { $str = ''; //待簽名字符串 //先將參數以其參數名的字典序升序進行排序 ksort($params); //遍歷排序后的參數數組中的每一個key/value對 foreach ($params as $k => $v) { //為key/value對生成一個key=value格式的字符串,并拼接到待簽名字符串后面 $str .= "$k=$v"; } //將簽名密鑰拼接到簽名字符串最后面 $str .= $secret; //通過md5算法為簽名字符串生成一個md5簽名,該簽名就是我們要追加的sign參數值 return md5($str); }[/php] 調用示例: [php] $uid = 67411167; $params = <a href="http://www.php.net/array">array</a>( "session_key" => "9XNNXe66zOlSassjSKD5gry9BiN61IUEi8IpJmjBwvU07RXP0J3c4GnhZR3GKhMHa1A=", "timestamp" => "2011-06-21 17:18:09", "format" => "json", "uid" => $uid, ); $sign = getSignature($params, "27e1be4fdcaa83d7f61c489994ff6ed6");[/php] 注意:加密的時候,需要將timestamp帶上,防止客戶端篡改。 客戶端,將自己需要傳遞的參數進行升序排序,然后加上自己key對應的密鑰(密鑰在服務端數據庫中有一份保存,這個是不能對外公開的)進行MD5加密,通過參數sign傳遞到服務端。 服務端拿到sign值后,對傳遞過來的參數也進行同樣的算法排序,并經過用戶的key查詢得到密鑰,然后進行一次加密算法,得到的服務端的sign和客戶端傳遞過來的sign進行比較,如果相同則表示是可以通過的,如果中途有人篡改數據等,那么最終加密出來的sign就是不一致的,這樣保證了用戶傳遞數據的可靠性和安全性。   7. 步驟五:檢查時間戳時間,比較客戶端時間和服務端時間是否在10分鐘之內,如果10分鐘之外了,那么返回超時的提示,這樣能保證調用過的接口數據能在一定時間內銷毀掉。   8. 步驟六:調用相應邏輯

贊 (

發表評論

主站蜘蛛池模板: 欧美亚洲综合色在| 国产精品综合久久第一页| 人人狠狠综合久久亚洲婷婷| 日韩欧美在线综合网| 7国产欧美日韩综合天堂中文久久久久| 日韩亚洲欧美久久久www综合网| 欧美日韩在线精品一区二区三区激情综合| 欧美综合图区亚洲综合图区| 婷婷亚洲综合五月天小说| 国产巨作麻豆欧美亚洲综合久久| 久久综合综合久久狠狠狠97色88| 国产综合第一页| 久久99亚洲综合精品首页| 人妻 日韩 欧美 综合 制服| 色婷婷久久综合中文久久一本| 伊人久久大香线蕉综合影院首页| 国产人成精品综合欧美成人| 国产综合色在线视频区| 天天久久狠狠色综合| 婷婷综合激情| 五月婷婷激情综合| 色综合久久夜色精品国产| 亚洲综合区小说区激情区| 色久悠悠婷婷综合在线亚洲| 亚洲伊人久久大香线蕉综合图片| 浪潮AV色综合久久天堂| 久久综合久久综合亚洲| 久久久久青草线蕉综合超碰| 亚洲Av综合色区无码专区桃色| 欧美激情综合五月色丁香| 久久亚洲高清综合| 色综合中文字幕| 婷婷丁香五月激情综合| 国产综合精品一区二区三区| 色婷婷综合缴情综免费观看| 婷婷五月综合丁香在线| 国产欧美日韩综合自拍| 激情综合亚洲色婷婷五月| 久久婷婷五月综合色高清| 色噜噜狠狠色综合久| 亚洲国产综合无码一区二区二三区|