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

WebSocket 的鉴权授权方案

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

引子

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短网址 译者|短链接 近几年,深度学习已经进入一定程度的狂热状态,人们正试图用这个技术解决每一个问题。然而,深度学习真是万能的吗?阅读此文后,你便能够从深层理解为什么深度学习并不是想象的那般“...

一锅白酒酿

一锅白酒酿

今天早上,收拾着东西去母亲家,女儿从里间蹿了出来,嚷嚷道:“妈妈,你这回千万千万不要从外婆家带东西了,我都吃怕了。”强调的语气让我发笑。刚刚不久,我从母亲家里回来,照例拎回了一堆推辞不掉的食物,其中份量最重的是白酒酿,足足有一大锅,这是我们...

全方位分析“深度学习与人工智能”的趋势走向

全方位分析“深度学习与人工智能”的趋势走向

行业剖析2016年,全球深度学习商场规模据估计已达到2.27亿美元。跟着在自动驾驶和医疗健康工业的运用不断增加,深度学习应该仍会对职业添加带来突出的贡献。它在技能上战胜数据量、强计算力以及在数据存储能力方面的优势,使得其在语音、图像等对数据...

陕西联通和短网址的故事---国企的作风

    昨天下班途中,突然接到了一个陌生来电,声称是陕西联通的工作人员,来势汹汹的说:你们知道我是谁吗?我是陕西联通的,只要我们稍微在系统里面提交一个申请,工信部就能把你们网站封了!就能让你们网站没有...

京东布局航天物流业 五年预计投资205亿

京东布局航天物流业 五年预计投资205亿

5月22日,京东集团与西安航天基地签订了京东全球物流总部、京东无人体系工业基地和京东云运营基地协作协议。根据双方协议,京东计划五年内投资205亿元与西安航天基地展开深入协作,在才智供应链领域进行全方位、体系性布局,发挥双方优势联合开展“33...

FT12短网址教你如何记录阅读进度

大家是否会遇到这些需求:如果有三个tab页签,从某个tab页签下跳出去打开新页后,点击浏览器后退键,能回到跳出去的相应tab页签下希望像原生app那样在wap端的列表页跳到详情页,点击浏览器后退键,能回到跳出去的列表处如果有上拉加载更多,希...

发表评论

访客

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