<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在日常 Web 端產品的使用中,一般都會支援掃碼登入,這種方式操作簡單,相對傳統的手機號登入等方式速度更快、安全性更高,還可以增加自家產品的粘合度。
掃碼登入本質是解決將 APP 端的使用者登入資訊(通常是 Token)通過掃碼的形式安全穩定地同步給 Web 端。
1)使用者開啟 Web 端網頁,進入掃碼登入的介面;
2)從 Web 端伺服器獲取二維條碼的圖並獲取其狀態;
3)Web 端伺服器在生成二維條碼時,會生成一個 uuid 和二維條碼進行關聯,並將 uuid 存入 db 記錄中;
4)使用者開啟 APP 端,對著二維條碼進行掃碼授權操作;
5)APP 使用者端從二維條碼中讀取到 uuid,帶著 APP 內的身份資訊存取 APP 端伺服器;
6)APP 端伺服器獲取到使用者的身份資訊後,將使用者 id 更新到 db 中對應 uuid 的記錄中,此時 Web 伺服器就能拿到對應的使用者 id,之後生成登入身份資訊返回給瀏覽器,即使用者在 Web 端完成了登入;
基於以上分析,我們可以將掃碼登入分為兩個步驟:獲取掃碼狀態和獲取使用者登入資訊。
使用者在 Web 端頁面看到二維條碼資訊後,會使用使用者端進行掃碼授權,而 Web 端需要儘快獲取到二維條碼的狀態(已掃碼、已過期、已取消、已授權)並同步到網頁中展示給使用者, 現在有3種方案:
Web 端存取伺服器獲取二維條碼狀態時,伺服器是阻塞了請求,等到二維條碼的狀態變更後才會返回結果,這種請求都會有超時設定(通常是幾分鐘),但又不能無限等待。
方案優點:
方案缺點:
Web 端每隔一個固定時間(為了更好的使用者體驗通常選擇為 1 秒)存取伺服器獲取二維條碼的狀態並進行展示。
方案優點:
方案缺點:
長輪詢即結合了長連結和定時輪詢的優點,Web 端存取伺服器獲取二維條碼狀態時,伺服器依然會阻塞了請求,但是超時時間會相對比較短(比如15秒),超時後 Web 端會繼續發起請求,如此往復。
方案優點:
方案缺點:
三種方案各有優缺點,應該結合業務進行選擇。
先以微信公眾平臺為例,進入其掃碼登入頁,就會發現密密麻麻的呼叫獲取掃碼狀態請求過程,很明顯是採用了輪詢方案。
再看看其他廠家選擇:
平臺方案微信開放平臺長輪詢微信公眾平臺輪詢京東輪詢淘寶&&天貓輪詢百度長輪詢B 站輪詢快手長連結
從上面可以看出目前主流方案是定時輪詢,這是由於掃碼登入本身也是低頻操作,並不會造成很大量的請求,但優點又比較突出。
當用戶掃碼登入後,Web 伺服器如何將使用者資訊(如 Token)同步給 Web 端。
指直接返回使用者登入資訊 Token。
方案優點:
方案缺點:
Web 端伺服器在掃碼完成後,返回的是一個授權 Ticket(也可以直接返回帶 Ticket 的授權 url, 便於 Web 端直接跳轉),之後需要 Web 端帶著這個 Ticket 呼叫目標伺服器的介面進行身份的驗證同步,如圖所示:
方案優點:
方案缺點:
平臺方案微信開放平臺授權Ticket微信公眾平臺Token京東授權Ticket淘寶&&天貓授權Ticket百度授權TicketB 站授權Ticket快手授權Ticket
經過調研發現,在國內網際網路各大廠商中返回授權 Ticket 的方案被較多采用,這也由於各家旗下擁有眾多 PC Web 站,直接返回 Token 的方案無法多站點的登入資訊同步,而上面表格中亦有一個另類——微信公眾平臺,大概與其產品獨立性有關。
前面提到,掃碼登入的本質是通過掃碼手段安全穩定地同步使用者資訊。那麼我們可以通過哪些手段提高同步過程中的安全性?
每個二維條碼都有一個唯一的 uuid 與之對應,為了防止惡意人員通過介面遍歷查詢以獲取之前已經被掃的二維條碼資訊,資料不能永久儲存於db中,需要完成掃碼後從 db 刪除或者定期過期清除。
簡單的方案是將自增 ID 和一個固定 salt 進行 md5 之後生成一個字串作為uuid;也可以通過 UUID.randomUUID()
生成一個隨機字串。當然,還可以採用對稱加密的方式儲存一些加密資訊。
這個方式關鍵點在於將 uuid 和請求中的 Cookie 或引數資訊經過雜湊演演算法得到一個 signature 值,此時即使有人破解了 uuid 的生成規則,只能生成uuid,但是無法獲知對應 uuid 生成時對應的 Web 端狀態(Cookie),因此破解了 uuid 後也無法獲取對應 signature 值,也就無法獲取二維條碼狀態。
一般是在獲取二維條碼階段對來源 IP 進行存取的限制。
當然掃描二維條碼階段也可以做限流,但是如果採用是定時輪詢方案,由於存取次數太多,無法做到精確識別和控制,可操作性不強;而如果採用的是阻塞等待方案,也能進行限流,但是如果已經採用了上面引數簽名驗證,則可以把惡意使用者都收口在獲取二維條碼階段,在這個階段限流的意義不大。
其實每個方案都有其適用的場景和階段,沒有嚴格意義上的孰優孰劣,這個從各網際網路公司的選擇中也能看出,而要基於自身的需要選擇最合適的方案,切忌盲目選擇最複雜的方案。
到此這篇關於Web端掃碼登入的原理和實現講解的文章就介紹到這了,更多相關掃碼登入的原理和實現內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45