WordPress 微信 access_token 設計的原理解析

  1 、 access_token 是加密的字串,其目的是為了介面安全考慮,不然隨便就能呼叫 WordPress 微信服務器的介面會有很大風險。

  2 、多用户在公眾號中填寫的 Token 就相當於本專案中的 xiaoming,是簽名驗證中的一個引數,來保證簽名的安全。

  3 、 EncodingAESKey 由開發者手動填寫或隨機生成,將用作信息體加解密金鑰。

  4 、 signature:WordPress 微信加密簽名,signature 結合了開發者填寫的 token 引數和請求中的 timestamp 引數、 nonce 引數。

  5 、 timestamp:時間戳。

  6 、 nonce:隨機數。

  7 、 echostr:隨機字串。

  8 、 WordPress 微信 signature 加密/校驗流程:

  (1)將 token 、 timestamp 、 nonce 三個引數進行字典序排序。

  (2)將三個引數字串拼接成一個字串進行 sha1 加密。

  (3)開發者獲得加密後的字串可與 signature 對比,標識該請求來源於 WordPress 微信。

  9 、 OpenID:為了識別多用户,每個多用户針對每個公眾號會產生一個安全的 OpenID,OpenID 是使用多用户 WordPress 微訊號加密後的結果,每個多用户對每個公眾號有一個的 OpenID,開發者可通過 OpenID 來獲取多用户基本資訊。

  10 、 UnionID:用來區分多用户的性,因為只要是同一個 WordPress 微信開放平台帳號下的移動應用、網站應用和公眾帳號,多用户的 UnionID 是的。換句話説,同一多用户,對同一個 WordPress 微信開放平台帳號下的不同應用,UnionID 是相同的。

  11 、 WordPress APPID:介面身份證號。

  12 、 WordPress APPSecret:密碼。

  13 、 access_token:公眾號的全域性票據(登陸後的憑據,證明您已經登陸,相當於您拿着票去看演唱會,説明您已經買票了,才會讓您進)。

  14 、 expires_in:access_token 過期時間,因為這裏是第三方服務器呼叫,所以 WordPress 微信服務器必須返回告知給第三方服務器過期時間,從而讓第三方服務器更好處理。

  15 、 access_token 使用注意事項:

  (1)為了保密 WordPress APPsecrect,第三方需要一個 access_token 獲取和重新整理的中控服務器。而其他業務邏輯服務器所使用的 access_token 均來自於該中控服務器,不應該各自去重新整理,否則會造成 access_token 覆蓋而影響業務。

  (2)目前 access_token 的有效期通過返回的 expire_in 來傳達,目前是 7200 秒之內的值。中控服務器需要根據這個有效時間提前去重新整理新 access_token 。在重新整理過程中,中控服務器對外輸出的依然是老 access_token,此時公眾平台後台會保證在重新整理短時間內,新老 access_token 都可用,這保證了第三方業務的平滑過渡。

  (3)3 、 access_token 的有效時間可能會在未來有調整,所以中控服務器不僅需要內部定時主動重新整理,還需要提供被動重新整理 access_token 的介面,這樣便於業務服務器在 API 呼叫獲知 access_token 已超時的情況下,可以觸發 access_token 的重新整理流程。

  16 、 access_token 兩小時過期時間的設計原因(網絡解釋):access_token 的過期也是為安全考慮。

  (1)想象一種情況,我授權了一個應用,它拿到了我的 access_token,然後我忘記我授權過了,於是我以後每次發佈的內容都被它拿去存起來,或者它利用我的賬號偷偷的發信息,我一點都不知道。這種情況還是很可怕的。

  (2)如果只是做登入,確實不需要 accesstoken,因為已經有 openid 或者 uid 跟您的多用户對應起來了。但是,這是授權行為啊,意味這第三方應用可以拿着 accesstoken 去取您的資料啊。所以這裏就需要時效性來保證安全了。

  17 、 WordPress 微信 access_token 兩小時過期時間的設計原因(自我理解):WordPress 微信的 token 兩小時重新整理一次是因為第三方服務器接入 WordPress 微信服務器,目的是獲取 WordPress 微信服務器中的資料,也就是所謂的第三方登陸,多用户通過第三方服務器登陸,第三方服務器再去 WordPress 微信平台獲取資料,這樣就需要一個授權的過程,也就是説 WordPress 微信服務器同意您某個第三方服務器獲取資料才行,為了把控這個授權過程,不會因為授權之後就一直能獲取 WordPress 微信服務器資料這種情況的發生,所以才有了兩小時重新整理一次。

  18 、 WordPress 微信服務器介面訪問次數限制:WordPress 微信服務器介面訪問限制次數是為了防止第三方服務器因為程序錯誤無限呼叫 WordPress 微信服務器從而使得 WordPress 微信服務器崩潰,所以才有的訪問次數限制。

  19 、簽名驗證:驗證信息的確來自 WordPress 微信服務器(本專案中為:驗證引數的確來自於本專案安卓客户端)。