• <acronym id="eyrpt"></acronym>
    <track id="eyrpt"></track>
    <p id="eyrpt"></p>

      <table id="eyrpt"><ruby id="eyrpt"></ruby></table>
      <table id="eyrpt"></table>

    1. 當前位置:首頁 > 短網址資訊 > 正文內容

      WebSocket 的鑒權授權方案

      引子

      WebSocket 是個好東西,為我們提供了便捷且實時的通訊能力。然而,對于 WebSocket 客戶端的鑒權,協議的 RFC 是這么說的:

      This protocol doesn’t prescribe any particular way that servers can
      authenticate clients during the WebSocket handshake. The WebSocket
      server can use any client authentication mechanism available to a
      generic HTTP server, such as cookies, HTTP authentication, or TLS
      authentication.

      也就是說,鑒權這個事,得自己動手

      協議原理

      WebSocket 是獨立的、創建在 TCP 上的協議。

      為了創建Websocket連接,需要通過瀏覽器發出請求,之后服務器進行回應,這個過程通常稱為“握手”。

      實現步驟:

      1. 發起請求的瀏覽器端,發出協商報文:

      2. 服務器端響應101狀態碼(即切換到socket通訊方式),其報文:

      3. 協議切換完成,雙方使用Socket通訊

      直觀的協商及通訊過程:

      websocket-lifecycle

      方案

      通過對協議實現的解讀可知:在 HTTP 切換到 Socket 之前,沒有什么好的機會進行鑒權,因為在這個時間節點,報文(或者說請求的Headers)必須遵守協議規范。但這不妨礙我們在協議切換完成后,進行鑒權授權:

      鑒權

      1. 在連接建立時,檢查連接的HTTP請求頭信息(比如cookies中關于用戶的身份信息)

      2. 在每次接收到消息時,檢查連接是否已授權過,及授權是否過期

      3. 以上兩點,只要答案為否,則服務端主動關閉socket連接

      授權

      服務端在連接建立時,頒發一個ticket給peer端,這個ticket可以包含但不限于:

      • peer端的uniqueId(可以是ip,userid,deviceid…任一種具備唯一性的鍵)

      • 過期時間的timestamp

      • token:由以上信息生成的哈希值,最好能加鹽

      安全性的補充說明

      有朋友問:這一套機制如何防范重放攻擊,私以為可以從以下幾點出發:

      • 可以用這里提到的expires,保證過期,如果你愿意,甚至可以每次下發消息時都發送一個新的Ticket,只要上傳消息對不上這個Ticket,就斷開,這樣非Original Peer是沒法重放的

      • 可以結合redis,實現 ratelimit,防止高頻刷接口,這個可以參考 express-rate-limit,原理很簡單,不展開

      • 為防止中間人,最好使用wss(TLS)

      代碼實現

      WebSocket連接處理,基于 node.js 的 ws 實現:

      授權用到的 Ticket(這里存儲用到的是knex + postgreSQL):

      utils 的哈希方法:

      掃描二維碼推送至手機訪問。

      版權聲明:本文由短鏈接發布,如需轉載請注明出處。

      本文鏈接:http://www.virginiabusinesslawupdate.com/article_382.html

      標簽: WebSocket鑒權
      分享給朋友:

      相關文章

      成為人生贏家的一條捷徑

      成為人生贏家的一條捷徑

      作為一個合格的上班族,一般周一就已經在期盼著周六周日的到來。然而吃吃喝喝買買買之后,總會有一個煩惱。那就是——賬單!一不小心花太多,下周又要吃土。更煩惱的是,身邊的有很多朋友,周末一樣過得很瀟灑,但人家該買房買房,該出國出國,完全是一副“人...

      直播行業亂象叢生,超過10家直播平臺被關停,3萬多表演者被處理,

       業界有人預測,2020年網絡直播市場規模將達到600億元,網絡直播及周邊行業市場最終將達到千億元級資金?! ?017年在監管層行業規范行動與“掃黃打非”政策的實施下,直播行業注定無法回到從前野蠻肆意的時期,而是迎來了一個漫長的整...

      何須百死報家國

      何須百死報家國

      或許你的女朋友會問你,你到底有多愛她?對不少男生來說,這簡直是世紀難題。不過現在網上流行這樣一個回復:我愛你就像愛中國足球,盡管你虐我千百遍,我仍待你如初戀,不離亦不棄??此评寺牧妹们樵?,實則顯示了國足的尷尬處境,中國再一次的無緣世界杯,...

      從知識付費不同時期的演化趨勢 看其蛻變軌跡

      從知識付費不同時期的演化趨勢 看其蛻變軌跡

      【FT12短網址資訊】信息技能革命后,泥沙聚下的信息爆炸逐步被精準對接用戶需要的商業開發篩選,常識也從海量的信息中被抽離,搖身一變從免費同享的資本成了待價而沽的商品。上一年知乎、分答、得到等途徑的火爆,真實撬動了常識付費這個萬億規劃的新商場...

      YOURLS:打造屬于自己的短網址網站

      YOURLS:打造屬于自己的短網址網站

      有些朋友對趙容的短網址感興趣詢問我,很早的時候,我分享過一個wordpress插件對一些較長的地址實現URL縮短,今天,我再分享一個開源PHP程序—YOURLS。首先,我們下載YOURLS源碼,目前最新版本為1.5,直接到官網下載(http...

      論壇私信推廣的準確操作姿態

      論壇私信推廣的準確操作姿態

      本人操作過的項目許多,每一個簡直都是從零起步,從沒想過把一切資源整合到一同,錯過了太多用戶,錯過了太多粉絲,我在短網址行業沒有一個兄弟,多年來陪我的即是那幾臺電腦和日夜運行的軟件。但是今天我不是來抱怨的,言歸正傳,分享給咱們一個親自操作的案...

      發表評論

      訪客

      ◎歡迎參與討論,請在這里發表您的看法和觀點。
      一本色综合网久久
    2. <acronym id="eyrpt"></acronym>
      <track id="eyrpt"></track>
      <p id="eyrpt"></p>

        <table id="eyrpt"><ruby id="eyrpt"></ruby></table>
        <table id="eyrpt"></table>