摘要:題外話微信公眾號開發接口里面,是通過調用微信的接口的。生成方式如下接口調用請求說明請求方式通過傳給微信后臺,后臺就會返回,這個是有有效期的,有點類似瀏覽器登錄。正常情況下,微信會返回下述數據不過個人覺得傳的方式不太優雅。
用戶認證
后臺服務要提供公共接口給用戶調用,必須要提供認證機制,一旦用戶認證通過,才讓用戶調用API。對于次,可以通過(access_key,secret_access_key)來認證。
這個(access_key,secret_access_key)是成對存在的。用戶要調用API必須要申請這樣的一對數據。一般工作流程是:
用戶在前端申請access key
服務器在后臺生成(access_key,secret_access_key),然后存進數據庫,然后把這對數據返回給用戶
用戶的調用API流程是:
通過secret_access_key來給請求參數簽名,并且把簽名附加到請求里,然后發請求給服務器
服務器通過請求里的參數access_key來查詢數據庫里的secret_access_key,然后用secret_access_key計算請求參數的簽名是否跟請求里的簽名一致,一致則確認用戶身份,不一致則拒絕訪問。
簽名接下來介紹給參數簽名的方法。如果請求參數如下:
{ "name": "fami", "address": "pek" }
把access_key加進這個請求里:
{ "name": "fami", "address": "pek", "access_key": "abc" }
將這些參數按key的字母升序排序,然后以key=value的形式表示,然后用&連接起來。效果如下:
access_key=abc&address=pek&name=fami
然后用以secret_access_key為key用sha256(或其他算法)對這個字符串進行簽名,如果簽名后得到`
signature = "xxxxxxxx"
那么把這個簽名添加到請求參數里,得到
{ "access_key": "abc", "name": "fami", "address": "pek", "signature": "xxxxxxxx" }
最終把這個發給服務器,服務器根據參數里的access_key去查看secret_access_key,然后把參數里的signature字段取出來,用前面的簽名方法來對剩下的參數進行簽名,如果發現自己計算的簽名跟請求參數里的簽名一樣,那么則通過認證。
安全問題這里會有一個問題:如果這個(access_key,secret_access_key)被別人知道了,那么別人就會以我的身份去調用API了。確實會有這個問題,針對此,可以用以下的方法來減小影響。
access key支持ip白名單,只有在白名單內的ip才可以調用API。
access key支持設置有效期,也就是在有效時間內,該access key有效,過了這個有效期,就拒絕訪問。
access key支持修改狀態,只有狀態為可用的情況下,服務器才會接受。
用戶使用API必然會擔心安全問題。在此之外還可以做些類似定期提醒用戶修改access key狀態,或者定期刪除access key。
題外話微信公眾號開發接口里面,是通過access_token調用微信的接口的。access_token生成方式如下:
接口調用請求說明
https請求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
通過傳appid, appsecret給微信api后臺,后臺就會返回access_token,這個access_token是有有效期的,有點類似瀏覽器登錄。
正常情況下,微信會返回下述JSON數據:
{"access_token":"ACCESS_TOKEN","expires_in":7200}
不過個人覺得傳appsecret的方式不太優雅。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41906.html
在tp上實現的auth2驗證的,在網上發現筆記很少, 不像yii, 故在此發表一下筆記,用來幫助有相關需求的朋友 PS: 鑒于oauth2有四種方案, 本實例是基于 客戶端憑證 實現,其他三種就不講述了 一、通過composer安裝 composer require --prefer-dist bshaffer/oauth2-server-php 安裝完成后,如圖:showImg(https://...
閱讀 1378·2021-09-24 10:26
閱讀 1689·2019-08-30 14:14
閱讀 2098·2019-08-29 16:54
閱讀 363·2019-08-29 14:09
閱讀 1468·2019-08-29 12:55
閱讀 922·2019-08-28 18:13
閱讀 1573·2019-08-26 13:39
閱讀 2560·2019-08-26 11:43