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

WebSocket 的鉴权授权方案

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

引子

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

相关文章

他45岁成中国最富二当家,净资产超宗庆后、郭台铭,却异常低调!

在《福布斯》日前发布的《2017年华人富豪榜》上,已从腾讯退休3年的张志东,以84亿美元的净资产位列第19位,排名超过台湾的郭台铭、大陆的宗庆后,也是榜单前20位中唯一的“二当家”。而今年,他才不过45岁。作为腾讯第二号人物张志东,腾讯产品...

FT12短网址:机器学习找“众包”当奶妈,大公司都这么干

FT12短网址:机器学习找“众包”当奶妈,大公司都这么干

[ FT12短网址资讯] 怎么运用众包创造机器学习的高品质数据库远不是一件简略的作业。众包背面触及哪些技能?怎么确保数据精准?啥样的公司适合用众包? 【编者按】AI年代下,研讨速度变成大公司们决胜的主要条件,为了减缩本钱...

如何利用QQ群,一个月裂变引流成千人大群

如何利用QQ群,一个月裂变引流成千人大群

工欲善其事必先利其器。进入网络项目圈子里的人大概都知道,流量为王,手上掌握了流量或者掌握了流量的技巧和流量入口,那么很多项目就直接成功了50%。圈子无非就是流量、项目点子、执行力、以及运营。流量就是基础,无论做普通民宅还是豪华别墅,都需要一...

一位宁波父亲写给考上北大儿子的信,有网友“看哭了!”

一位宁波父亲写给考上北大儿子的信,有网友“看哭了!”

一位宁波父亲写给考上北大儿子的信刷爆朋友圈,或许这是他一路优秀的秘诀……文|宁波晚报记者 梅子满  这两天,一封宁波父亲写给即将上北大儿子的信在微信朋友圈里传疯了!  这封言语朴实平淡的家书,感动了无数网友,有网友直呼:“看哭了!”  在这...

摩拜用100%确保用户押金安全来回应交通部新政

交通运输部于昨天发布《对于鼓舞和标准互联网租赁自行车开展的指导定见》(征求定见稿),请求同享单车企业对用户押金施行“即租即押、即还即退”的形式,并鼓舞同享单车企业免押金提供效劳。摩拜单车今天对此作出回应。摩拜单车回应称,该定见稿表现了政府办...

域名解析实践——HTTPDNS

几乎一切需求网络连接的使用都会依赖域名体系(Domain Name System,DNS)。域名解析效劳一般作为一次网络连接的先导,将人们便于记忆的计算机名称解析成计算机合适处理的网络地址。因而DNS安稳效劳是上述网络使用正常运转的条件,地...

发表评论

访客

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