解析App中手機(jī)號(hào)碼一鍵登錄的原理
本機(jī)號(hào)碼一鍵登錄是一種新型的登錄方式,登錄方式的演變過程大致可以分幾個(gè)階段:
一鍵登錄從用戶體驗(yàn)和安全性上來講是更優(yōu)的一種登錄方式,目前在很多APP的目前都支持“本機(jī)號(hào)碼一鍵登錄”功能,如下圖所示的一鍵登錄圖:
APP中會(huì)展示一個(gè)帶有手機(jī)號(hào)掩碼(中間4位號(hào)碼隱藏了)的授權(quán)登錄頁(yè)面,用戶點(diǎn)擊“同意授權(quán)”按鈕后,應(yīng)用APP通過運(yùn)營(yíng)商獲取完整的手機(jī)號(hào)碼(因?yàn)闉榱吮Wo(hù)用戶隱私,Android和IOS系統(tǒng)限制了應(yīng)用直接獲取本機(jī)號(hào)碼的能力),然后有了完整的手機(jī)號(hào)碼后可以實(shí)現(xiàn)以本機(jī)號(hào)碼的方式登錄。那么本機(jī)號(hào)碼一鍵登錄是如何實(shí)現(xiàn)的呢?下面我們來聊聊它的實(shí)現(xiàn)原理和流程。
1、本機(jī)號(hào)碼一鍵登錄的基礎(chǔ)原理
手機(jī)流量上網(wǎng)原理是實(shí)現(xiàn)一鍵登錄的關(guān)鍵。流量上網(wǎng)采用PPP協(xié)議進(jìn)行點(diǎn)對(duì)點(diǎn)連接。在物理層,流量通過手機(jī)內(nèi)置的基帶模塊進(jìn)行無線信號(hào)的調(diào)制、解調(diào)工作。
流量上網(wǎng)過程分為接入和傳輸兩個(gè)階段,接入階段中手機(jī)攜帶IMSI信息連接MME(移動(dòng)控制單元),MME通過HSS(歸屬簽約用戶服務(wù)器)驗(yàn)證后,進(jìn)行初始化并提供加密傳輸支持。傳輸階段中數(shù)據(jù)包經(jīng)過基站、S-GW(服務(wù)網(wǎng)關(guān))、P-GW(PDN網(wǎng)關(guān))到達(dá)互聯(lián)網(wǎng)資源,同時(shí)運(yùn)營(yíng)商能夠通過IMSI或GUTI獲取當(dāng)前用戶的手機(jī)號(hào)碼。
獲取手機(jī)號(hào)碼的能力通過數(shù)據(jù)網(wǎng)關(guān)實(shí)現(xiàn),運(yùn)營(yíng)商具備驗(yàn)證連接用戶身份的能力,手機(jī)卡中的IMSI信息在運(yùn)營(yíng)商數(shù)據(jù)庫(kù)中記錄,確?;灸軌蝌?yàn)證用戶身份。
2、APP中本機(jī)號(hào)碼一鍵登錄的實(shí)現(xiàn)流程
圖片
(1)獲取手機(jī)掩碼并喚起授權(quán)頁(yè)
當(dāng)用戶打開APP需要登錄的時(shí)候,APP會(huì)取運(yùn)營(yíng)商那里查詢用戶的手機(jī)號(hào)碼掩碼,運(yùn)營(yíng)商驗(yàn)證通過之后將當(dāng)前的手機(jī)號(hào)掩碼返回給APP并在認(rèn)證的運(yùn)營(yíng)商的認(rèn)證SDK上緩存手機(jī)號(hào)的掩碼,最后就是展示給用戶手機(jī)號(hào)的掩碼,如下圖所示的展示的手機(jī)號(hào)掩碼:
圖片
(2)獲取手機(jī)號(hào)掩碼的token
用戶點(diǎn)擊“本機(jī)號(hào)碼一鍵登錄”按鈕之后,APP發(fā)送授權(quán)請(qǐng)求到運(yùn)營(yíng)商服務(wù)器上,運(yùn)營(yíng)商驗(yàn)證通過之后返回手機(jī)號(hào)掩碼和手機(jī)號(hào)掩碼對(duì)應(yīng)的token給應(yīng)用APP。
(3)獲取手機(jī)號(hào)的應(yīng)用授權(quán)token_a
應(yīng)用APP攜帶手機(jī)號(hào)掩碼token發(fā)起登錄請(qǐng)求到手機(jī)APP服務(wù)器上,然后手機(jī)APP服務(wù)器上通過攜帶手機(jī)號(hào)掩碼token、應(yīng)用id和簽名請(qǐng)求運(yùn)營(yíng)商服務(wù)器。運(yùn)營(yíng)商服務(wù)器驗(yàn)證通過之后返回完整的手機(jī)號(hào)碼給手機(jī)APP服務(wù)器,然后手機(jī)APP服務(wù)器生成對(duì)應(yīng)的應(yīng)用授權(quán)token_a,并返回應(yīng)用授權(quán)token_a給APP,APP緩存應(yīng)用授權(quán)token_a并提示登錄成功。
(4)APP攜帶應(yīng)用授權(quán)token_a訪問服務(wù)器:
每當(dāng)APP請(qǐng)求訪問手機(jī)APP服務(wù)器的時(shí)候,客戶端都會(huì)帶著token_a訪問服務(wù)器,服務(wù)端驗(yàn)證token_a同通過后便讓請(qǐng)求訪問。
至此就完成了本機(jī)號(hào)碼一鍵登錄請(qǐng)求的流程。
總結(jié):
(1)本機(jī)號(hào)碼一鍵登錄是實(shí)現(xiàn)不用記復(fù)雜的密碼,不送接收驗(yàn)證碼,真正的實(shí)現(xiàn)2秒輕松的登錄。
(2)本機(jī)號(hào)碼一鍵登錄經(jīng)過獲取手機(jī)掩碼、獲取手機(jī)號(hào)掩碼的token、獲取手機(jī)號(hào)的應(yīng)用授權(quán)token_a等幾個(gè)關(guān)鍵步驟后實(shí)現(xiàn)登錄流程。
(3)三個(gè)運(yùn)營(yíng)商的都有各自的開放平臺(tái)(移動(dòng) - 互聯(lián)網(wǎng)能力開放平臺(tái)、電信-天翼賬號(hào)開放平臺(tái)、聯(lián)通-WO+開放平臺(tái)),如果要兼容三大運(yùn)營(yíng)商就需要分別接入三個(gè)SDK,目前已經(jīng)有了第三方整合了三大運(yùn)營(yíng)商認(rèn)證能力的第三方SDK(常見的有阿里-號(hào)碼認(rèn)證服務(wù)、創(chuàng)藍(lán)-閃驗(yàn)、極光-極光認(rèn)證、mob-秒驗(yàn))。