成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

access key 筆記

lavnFan / 3257人閱讀

摘要:題外話微信公眾號開發(fā)接口里面,是通過調(diào)用微信的接口的。生成方式如下接口調(diào)用請求說明請求方式通過傳給微信后臺,后臺就會返回,這個是有有效期的,有點類似瀏覽器登錄。正常情況下,微信會返回下述數(shù)據(jù)不過個人覺得傳的方式不太優(yōu)雅。

用戶認證

后臺服務要提供公共接口給用戶調(diào)用,必須要提供認證機制,一旦用戶認證通過,才讓用戶調(diào)用API。對于次,可以通過(access_key,secret_access_key)來認證。
這個(access_key,secret_access_key)是成對存在的。用戶要調(diào)用API必須要申請這樣的一對數(shù)據(jù)。一般工作流程是:

用戶在前端申請access key

服務器在后臺生成(access_key,secret_access_key),然后存進數(shù)據(jù)庫,然后把這對數(shù)據(jù)返回給用戶

用戶的調(diào)用API流程是:

通過secret_access_key來給請求參數(shù)簽名,并且把簽名附加到請求里,然后發(fā)請求給服務器

服務器通過請求里的參數(shù)access_key來查詢數(shù)據(jù)庫里的secret_access_key,然后用secret_access_key計算請求參數(shù)的簽名是否跟請求里的簽名一致,一致則確認用戶身份,不一致則拒絕訪問。

簽名

接下來介紹給參數(shù)簽名的方法。如果請求參數(shù)如下:

{
    "name": "fami",
    "address": "pek"
}

把access_key加進這個請求里:

{
    "name": "fami",
    "address": "pek",
    "access_key": "abc"
}

將這些參數(shù)按key的字母升序排序,然后以key=value的形式表示,然后用&連接起來。效果如下:

access_key=abc&address=pek&name=fami

然后用以secret_access_key為key用sha256(或其他算法)對這個字符串進行簽名,如果簽名后得到`

signature = "xxxxxxxx"

那么把這個簽名添加到請求參數(shù)里,得到

{
    "access_key": "abc",
    "name": "fami",
    "address": "pek",
    "signature": "xxxxxxxx"
}

最終把這個發(fā)給服務器,服務器根據(jù)參數(shù)里的access_key去查看secret_access_key,然后把參數(shù)里的signature字段取出來,用前面的簽名方法來對剩下的參數(shù)進行簽名,如果發(fā)現(xiàn)自己計算的簽名跟請求參數(shù)里的簽名一樣,那么則通過認證。

安全問題

這里會有一個問題:如果這個(access_key,secret_access_key)被別人知道了,那么別人就會以我的身份去調(diào)用API了。確實會有這個問題,針對此,可以用以下的方法來減小影響。

access key支持ip白名單,只有在白名單內(nèi)的ip才可以調(diào)用API。

access key支持設置有效期,也就是在有效時間內(nèi),該access key有效,過了這個有效期,就拒絕訪問。

access key支持修改狀態(tài),只有狀態(tài)為可用的情況下,服務器才會接受。

用戶使用API必然會擔心安全問題。在此之外還可以做些類似定期提醒用戶修改access key狀態(tài),或者定期刪除access key。

題外話

微信公眾號開發(fā)接口里面,是通過access_token調(diào)用微信的接口的。access_token生成方式如下:

接口調(diào)用請求說明

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數(shù)據(jù):

{"access_token":"ACCESS_TOKEN","expires_in":7200}

不過個人覺得傳appsecret的方式不太優(yōu)雅。

文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41906.html

相關文章

  • 關于ThinkPHP5中使用 Auth2 驗證的實現(xiàn)

    在tp上實現(xiàn)的auth2驗證的,在網(wǎng)上發(fā)現(xiàn)筆記很少, 不像yii, 故在此發(fā)表一下筆記,用來幫助有相關需求的朋友 PS: 鑒于oauth2有四種方案, 本實例是基于 客戶端憑證 實現(xiàn),其他三種就不講述了 一、通過composer安裝 composer require --prefer-dist bshaffer/oauth2-server-php 安裝完成后,如圖:showImg(https://...

    alaege 評論0 收藏0
  • js 閉包理解筆記

    摘要:發(fā)現(xiàn)指向的是,也就是說,在函數(shù)內(nèi)部實現(xiàn)的閉包函數(shù)已經(jīng)被轉(zhuǎn)變成了全局函數(shù),存儲到了內(nèi)存中。閉包同樣可以模擬面向?qū)ο蟮乃接凶兞康姆椒ê妥兞康氖褂煤瞳@取。 https://developer.mozilla.org... 首先引用來自官網(wǎng)文檔的定義: closure is the combination of a function and the lexical environment wi...

    liuyix 評論0 收藏0
  • Nginx基礎筆記

    摘要:壓力測試工具請求數(shù)并發(fā)數(shù)請求是一個高性能的和反向代理服務,也是一個服務。 壓力測試工具:ab ab -n 請求數(shù) -c 并發(fā)數(shù) 請求url Nginx: Nginx (engine x) 是一個高性能的HTTP和反向代理服務,也是一個IMAP/POP3/SMTP服務。 特點: IO多路復用epoll 輕量級 CPU親和(affinity):把每個worker進程固定在一個cpu上執(zhí)...

    caige 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<