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

WebSocket 的鉴权授权方案

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

引子

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鉴权
分享给朋友:

相关文章

淘宝营销和短网址的故事

 淘宝有淘宝联盟和淘宝客,这个应该很多人都知道。由于巨大的客流量,大家都很希望能在淘宝的人海中分一杯羹,所以淘宝联盟推广的人非常多。但是很不幸的是,淘宝的推广链接非常的长,长到让人无法忍受。所以这时候,聪明的站长都选择了网址缩短。...

中国式无现金生活 谁给了你“不用等”的底气?

在日本最大的论坛2ch上,一则标题为《中国的非现金社会飞速发展已超乎想象》的帖子,近日引发了日本网友对于中国移动支付的热烈讨论。讨论贴称,目前中国只有不到11%的人还在使用现金支付,移动支付已在中国取得统治地位。回帖的网友们还举出了很多有趣...

【官方说法】只需两步,正确识别百度蜘蛛

【官方说法】只需两步,正确识别百度蜘蛛

经常听到站长们问,百度蜘蛛是什么?最近百度蜘蛛来的太频繁服务器抓爆了,最近百度蜘蛛都不来了怎么办,还有很多站点想得到百度蜘蛛的IP段,想把IP加入白名单,但IP不固定,我们无法对外公布。那怎么才能识别正确的百度蜘蛛呢?来来来,以短网址站为例...

月薪5万的人都经历过什么?

为了方便起见,人们习惯用数字概括不同的生活状态,比如:《月薪5千穿搭指南》、《月薪2万餐厅指南》。如果你生活在北上广这些竞争压力较大的城市,会发现这类流行的指南所覆盖的人群,大多对自己的薪资并不满意。很多年轻人在新世相后台焦虑地留言,描述自...

智能音箱之后,语音交互的爆款会是谁?

智能音箱之后,语音交互的爆款会是谁?

[ FT12短网址 ] 现如今,语音作为人机交互的入口之一,已经成为国内外科技媒体,以及大大小小的人工智能峰会讨论的焦点。谁会成为下一代现象级的语音交互产品?也成为大家热议的话题。图片来自“123rf.com.cn”在谈及预测下一...

直播行业乱象丛生,超过10家直播平台被关停,3万多表演者被处理,

 业界有人预测,2020年网络直播市场规模将达到600亿元,网络直播及周边行业市场最终将达到千亿元级资金。  2017年在监管层行业规范行动与“扫黄打非”政策的实施下,直播行业注定无法回到从前野蛮肆意的时期,而是迎来了一个漫长的整...

发表评论

访客

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