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 微信伺服器(本專案中為:驗證引數的確來自於本專案安卓客戶端)。