当前位置:首页 > 短网址资讯 > 正文内容

WebSocket 的鉴权授权方案

www.ft12.com9年前 (2017-08-05)短网址资讯3173

引子

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 的哈希方法:

扫描二维码推送至手机访问。

版权声明:本文由短链接发布,如需转载请注明出处。

本文链接:https://www.ft12.com/article_382.html

标签: WebSocket鉴权
分享给朋友:

相关文章

原来国内外互联网企业开的实体店都长这样

原来国内外互联网企业开的实体店都长这样

【FT12短网址】曾经,咱们都在说要从线下走到线上,现在却反过来了,不断添加互联网公司开端着手规划实体店。除了有国际电商巨子亚马逊、阿里、京东们的尝试之外,国内外还有一大波开线下店的“传统互联网公司”。能够想象一下,这将会给线下零售市场带来...

短网址资讯:连打赏都要分苹果三成 中国反垄断法不能视而不见

美国闻名财经媒体《华尔街日报》报导,苹果公司在APP store上提出了新的请求,“打赏”将像用户采购的游戏、音乐和视频相同,被视为运用内采购(in-app purchases),苹果将从中取得30%的分红。为了保证方针...

比特币与以太币狭路相逢,这是一场单品与生态的对决

以太币vs比特币,哪个更有出路?  来源 | 洪言微语(ID:hongyanweiyu)  作者 | 薛洪言  比特币作为区块链数字钱银开创者,一直稳居数字钱银龙头位置,遥遥领先其他竞争币(相比比特币有所改良的数字钱银)和山寨币(彻底cop...

马云又有新动作!天猫小店来了,颠覆传统小卖部!

140平米,8年时光,两代超市,两代人。这家超市位于浙江大学玉泉校区北门的西溪路上,是黄安的父亲黄海东一手做起来的小店,但随着年纪的增长和周边连锁便利店竞争的加剧,他显得有点力不从心。一年前,他“连哄带骗”地让黄安从杭州行政服务中心离职,一...

黑科技分享:打开短信里的短网址实现调起app应用

当我们给用户发送一条短信,里面有一条短链接,当用户点击短链接就能打开APP首页或指定页面。是不是很酷?那么这是如何实现的呢?用的第三方应用还是自己写的?小编今天就给大家揭秘。其实,实现的方法很简单。可以使用FT12短网址http://www...

你尽管秀,明年还是这个人算我输

“秀恩爱,分得快”,这从来都不是什么诅咒或者眼红的恶语,而是人类社会久存于世的公理。01每个人的朋友圈里,都不乏一些热衷于秀恩爱的人,逢年过节尤甚。或感恩一路相伴,或单纯惹眼撒狗粮,文字不重要,重要的是配图。要么聊天记录,要么旅行风光,要么...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。