日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网站扫码登录时怎么一回事?

發布時間:2023/12/31 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网站扫码登录时怎么一回事? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

網站掃碼登錄時怎么一回事?

在了解這個原理之前,一百個為什么?

什么是二維碼?

掃碼登錄的原理是什么?

二維碼里面是什么?

服務端,移動端,網站之間發生了什么?

對于服務器于第三方的網站為什么需要授權,健全?

掃碼登錄為什么需要是在登錄之后才可以使用?

關于二維碼引發的網絡安全是什么?

服務端與網絡之間的通信是怎么進行的?

對于第三方平臺的授權方式有什么?

對于網頁進行長輪詢詢問服務器,怎么在控制臺看出來?

token里面攜帶的是什么?

在了解掃二維碼登錄的前提下,我們先來了解一下什么鑒權?

對于服務器來說它不知道每次發送的請求是誰,而有些資源是部分共享的,那么這時候就需要鑒權這個手段。

在瀏覽器安全方面,我們客戶端和服務端之間才有了鑒權方式,一方面考慮到http無狀態,另一方面考慮到防止被攻擊。

鑒權

Cookie + Session 登錄

session解決的是http協議無狀態的問題。session是由24個隨機的字符串組成的。session是服務端的解決方案,那么對于客戶端與服務端來說,這是兩套隔離系統,那么對于服務端來說通過每次檢查請求頭里面的唯一標識sessionid去讀取它對應的key值。服務端一般會把sessionid放在哪里呢?內存,硬盤等,不同的語言有不同的解決方案。

對于客戶端來說,是sessionid是存儲在cookie字段里面的,對于禁止緩存的客戶端說,我們可以對sessionid進行加密,然后通過url的形式進行傳遞,好比我們通過點擊鏈接跳轉到第三方網站的時候,不需要我們進行登錄兒需要我們鑒權。

Token 登錄

使用jwt(Json Web Token)方案,客戶端與服務端進行了六次交互

  • 客戶端向服務端發起登錄請求,并攜帶用戶名和密碼

  • 服務端檢驗用戶名和密碼,

  • 檢驗成功以后,返回token(json對象,里面包括

    • headers 類別和加密算法
    • claims 用戶信息,開發者自定義
    • signature 根據指定的加密算法和私密的私鑰,在服務端進行加密而得到的簽名的字符串。

    給客戶端。如果未成功或者過期了,就告訴服務器需要重新鑒權。

  • 客戶端將token存儲(cookie, localStorage)起來

  • 每次發起請求,請求頭header都帶著token

  • 服務端對于每次發送的token,都會檢查它的時效性,如果過期了,就重新用加密算法加密再次發送給客戶端。

  • OAuth 第三方登錄

    那么我們通過微信,釘釘,淘寶掃碼登錄是屬于哪一種呢?

    我們可以看這個網站的開放平臺,可以看到大多數是采用OAuth 第三方登錄。

    OAuth

    OAuth

    在生活中,網站利用微信qq登錄一鍵登錄,網站通過微信qq掃碼一鍵登錄,小程序使用微信一鍵登錄等這都是采用oauth驗證。

    對于第三方應用的授權驗證,一般分為三個角色,用戶,第三開發者,授權服務器。接下來我們通過這三個角色對下面三個使用oauth的應用場景進行分析。

    在生活中,網站利用微信qq登錄一鍵登錄,網站通過微信qq掃碼一鍵登錄,小程序使用微信一鍵登錄等這都是采用oauth驗證。

    對于第三方應用的授權驗證,一般分為三個角色,用戶,第三開發者,授權服務器。接下來我們通過這三個角色對下面三個使用oauth的應用場景進行分析。

    客戶端與服務端——Websocket

    對于傳統的服務器與客戶端通信,只有客戶端向服務端發送信息,可是服務端缺少主動性,wesocket剛好滿足這個要求,也就是服務端主動推動。

    二維碼的登錄原理是什么?

    二維碼的本質是什么?

    二維碼其實也是字符串。

    • 可以是二維碼ID

    • 可以是包含二維碼ID的一個url地址

    怎么生成二維碼?

    當pc端去請求服務器,服務端會生成隨機的id值,這時候網頁根據這個id值生成二維碼,這時候就等待移動端的掃碼了

    二維碼的狀態有哪些?

    已生成,待確定,已確定

    二維碼的狀態是怎么轉變的?這里從兩個方面進行討論轉變。

    手機端 - pc端-服務端(未接入第三方應用)
  • 二維碼的背后它一定存在一個唯一性的ID,當二維碼生成時,這個ID也一起生成,并且綁定了PC端的設備信息
  • 手機去掃描這個二維碼

  • 二維碼切換為 已掃描待確認狀態, 此時就會將賬號信息與這個ID綁定

  • 當手機端確認登錄時,它就會生成PC端用于登錄的token,并返回給PC端

  • 手機端 - pc端-服務端(接入第三方應用)

    這幾天相繼看了釘釘開放者平臺,微信開放平臺等對于掃碼登錄第三方網站,都有一些預授碼,授權。臨時憑證等,我在想為什么要授權?看得我一頭霧水,這時候了解了oauth機制才知道。了解完二維碼的原理,pc端,服務端,移動端之間掃碼登錄的具體步驟,知道了二維碼其實也是字符串,當pc端去請求服務器,服務端會生成隨機的id值,這時候網頁根據這個id值生成二維碼,這時候就等待移動端的掃碼了。這時候pc端也就是代理服務器怎么有權利去訪問服務器資源呢?這就是一個臨時憑證的生成,這個臨時的憑證是怎么生成的?那像生活中的app端的支付寶(第三方應用)掃碼登錄支付寶網站呢?我們把第三方應用都比做移動端,因為移動端無法存儲密碼,相反它存儲的是token,換句話說,這是一場基于token的認證機制。而token里面是什么呢?移動端看到網站的二維碼,掃碼得到的是二維碼的ID值,移動端手機的設備信息發給服務器。這時候二維碼的狀態變成待確定,這時候移動端把賬號信息就和id進行綁定。當手機確定以后,它就會生成pc用于登錄的token,并返回給服務端。在移動端與服務器的互動的過程中,pc端會一直輪詢服務器的二維碼狀態。接下來要討論pc端怎么拿到服務端的token了,因為在pc端和網站之間還有一層授權層,這個授權層是基于OAuth協議,不同的第三方應用有不一樣的處理方式,比如微信,釘釘,京東。這個授權可以理解為用戶(移動端)給網站權利可以訪問使用資源庫(服務端),也就是這時候客戶端要利用服務端的api請問臨時授權碼,那么請求體要帶什么呢?一般是用戶的賬號密碼等。如果驗證通過,就會返回臨時票據code。再通過code 加上 appid 和 appsecret來換取 access_token。這時候就拿到令牌了。

    微信客戶端,網站,服務器,微信開放平臺這幾個角色之間有什么關系呢?看字看多了還是圖文來的比較直觀是吧!

    網站掃碼登錄

    這里需要思考的是我們最終的目標是拿到服務端的授權碼,那我們首先是想拿到用戶授權碼,那么怎么主動拿到用戶授權碼呢?其實就是生成個二維碼,從我們點擊圖標或者選擇登錄方式的時候,我們的客戶端的后臺就向授權服務端請請求一個二維碼id,然后用qrcode庫繪制,那么怎么傳到客戶端(網站)展示出來呢?以前接觸的都是客戶端發送給服務端,那我們服務端怎么主動發給客戶端呢?這就涉及我們前面設計的webbsocket通信啦!二維碼一掃,客戶端用戶授權拿到手(一般監聽二維碼事件),客戶端利用js攜帶code(用戶授權)發送請求給自己的后臺,后臺拿到code,這時候再像授權服務器(微信開放平臺等),這時候授權服務器返回服務器授權碼,這是一場基于token的認證機制。


    小程序掃碼登錄

    對于剛剛的二維碼原理,一共有是泛指三個角色,移動端,服務端,客戶端。

    那么對于小程序掃碼登錄網站,這三個三個角色指的是什么?我們首先要明白我們掃碼登錄這是一個token鑒權的過程,那么通過鑒權,我們要共享什么呢?

    當然是用戶的信息

    從這里開始,用戶的信息,我們用微信登錄第三方網站是為了獲取用戶信息登錄第三方網站,那么用戶信息放在哪里呢?微信服務器有服務提供商也就是微信開放平臺,這里好比就是三者中的服務端,網站分前后臺(開發者服務器),那么客戶端泛指這兩者,移動端就很好認啦,也就是微信客戶端。(小程序)

    實踐

    小程序掃碼登錄網站

    pc端(小程序)采用websocket和后臺(express)進行通信,微信作為手機客戶端,微信開放平臺作為授權服務器。

    • 微信開放平臺申請小程序
    • 微信掃碼獲得那一串就是用戶授權碼
    • 數據庫存的是openid
    • 網站生成的是小程序碼
    • 小程序記錄通信狀態


    ![請添加圖片描述](https://img-blog.csdnimg.cn/949d09729d5a4b37b26615e04a4794a4.gif

    釘釘掃碼登錄

    代碼實現

    • 重定向網站
    • iframe嵌入

    首先你得用注冊,創建一個企業內部應用。

    進行內網穿透

    借鑒

    鑒權

    你再說說微信掃碼登錄背后的實現原理?(以某東為例)

    網頁授權

    websocket 實現微信掃碼登錄(需關注公眾號) #8

    二維碼登錄原理

    點擊微信登錄

    極客時間-二維碼原理

    一張圖搞定OAuth2.0

    應用開發

    web項目對接釘釘掃碼登錄

    掃碼登錄第三方網站

    總結

    以上是生活随笔為你收集整理的网站扫码登录时怎么一回事?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。