|
圖片來自于微信小程序文檔 微信小程序的身份認(rèn)證不同于用戶名+密碼換取token類型的身份認(rèn)證,因?yàn)樾〕绦蚴沁\(yùn)行在微信之上的,用戶信息在微信服務(wù)器,以下說明開發(fā)者如何針對(duì)小程序用戶做身份認(rèn)證. 如果你的小程序時(shí)動(dòng)態(tài)的,需要和后臺(tái)做數(shù)據(jù)交互,那么你需要在小程序啟動(dòng)時(shí)調(diào)用wx.login()方法,該方法會(huì)從微信服務(wù)器獲取一個(gè)code,然后將這個(gè)code發(fā)送至開發(fā)者服務(wù)器,在第三方開發(fā)者服務(wù)器中利用code再?gòu)奈⑿欧?wù)器獲取一個(gè)密鑰(session_key)和用戶唯一標(biāo)識(shí)(openid). 如果第三方服務(wù)器有了用戶唯一標(biāo)識(shí),那么開發(fā)者就知道某個(gè)請(qǐng)求來自于哪個(gè)用戶,從而針對(duì)該用戶做數(shù)據(jù)的增刪改查等. 現(xiàn)在有了openid,你不能直接將明文發(fā)送給客戶端,明文直接在網(wǎng)絡(luò)上傳輸有安全風(fēng)險(xiǎn),我們需要將它加密生成3rd_session,這個(gè)密鑰(session_key)就是用來給openid加密用的,注意這個(gè)3rd_session應(yīng)該是可以解密的,因?yàn)?rd_session發(fā)送給客戶端,客戶端在請(qǐng)求數(shù)據(jù)時(shí)需要將這個(gè)3rd_session放在請(qǐng)求頭中發(fā)送給開發(fā)者服務(wù)器作為身份憑證,開發(fā)者將其解密得到openid. 以下給出Python的加密解密模塊cryptography的使用方法,這大概是我知道的使用起來最簡(jiǎn)單的Python加密解密模塊了:
以上代碼沒有用session_key作為key來加密openid,直接用generate_key()方法生成一個(gè) key,注意這個(gè)key也應(yīng)該保存下來,因?yàn)榻饷軙r(shí)需要加密時(shí)的key.
|