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

WebSocket 的鉴权授权方案

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

引子

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

相关文章

短网址的今生前世

短网址的今生前世

引言  短网址司空见惯,比如说下面这些  http://u6.gg/baidu => http://www.baidu.com,  http://rrd.me/baidu => http:...

公众号新商机:可插入文章链接 ,帮客户打广告

公众号新商机:可插入文章链接 ,帮客户打广告

【FT12短网址资讯】6月6日消息,FT12短网址工作人员获悉,微信团队宣告,今天起,微信大众渠道上线新功用,一切帐号都可在图文消息里刺进大众渠道内任意已群发的文章链接。现在,可经过以下两种方法添加文章:一、直接输入文章连接地址。复制想要刺...

你结不结婚这事不仅你妈妈伤心  钻石业更是哭晕在厕所

你结不结婚这事不仅你妈妈伤心 钻石业更是哭晕在厕所

最近常常听好事将近的朋友说成婚时不准备在首饰上花大钱,更有甚者计划把买戒指的钱花在蜜月旅行上。对以80后,90后为代表的这一有些行将迈入婚姻殿堂的人来说,那个成婚就代表着三大件,金银首饰的时代已经过去,戒指不再作为缔成婚姻的主要标志了。那么...

卡夫卡,我最喜欢的《变形记》

卡夫卡,我最喜欢的《变形记》

《变形记》  因为篇幅短又大名鼎鼎,高中就读过,后来又读过多个译本,跟《判决》一样,总给人一种“裤子都脱了你给我看这啊”的感觉。这就结束了?完全get不到它的好,觉得太一般了。真的只是因为它短,打发时间,短篇最大的好处就...

汽车电商周报:解散风波与银行入股消息齐飞

【短网址资讯网】本周汽车电商与出行领域有10件大事值得关注。从汽车电商数据和平台的相关动作来看,汽车电商有惊无险,解散风波安全度过,业务创新还在继续。另外一个亮点是,本周互联网出行领域内关于摩拜被曝贪腐一事逐渐尘埃落定,网约车平台也拿到资质...

微服务架构 API 的开发与治理

微服务架构 API 的开发与治理

虽然已经红了很久,但是“微服务架构”正变得越来越重要,也将继续火下去。各个公司与技术人员都在分享微服务架构的相关知识与实践经验,但我们发现,目前网上的这些相关文章中,要么上来就是很有借鉴意义的干货,要么就是以高端的专业术语来讲...

发表评论

访客

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