当前位置:首页 > 短网址资讯

WebSocket 的鉴权授权方案

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

引子

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

相关文章

否认全盘接手,百度外卖或与顺丰成立合资公司

否认全盘接手,百度外卖或与顺丰成立合资公司

[ 亿欧导读 ] 现在顺丰控股收购baidu外卖的方向是,双方将按照5:5的出资份额,一起出资经过建立合资公司来运营,不过一切都未确定,还存在变数。一位接近交易的人士表示:“之所以不会全盘接手baidu外卖,主要是因为顺丰以为全资…

年薪100万的年轻人都是怎样生活的?

年薪100万的年轻人都是怎样生活的?

税季,我 Facebook 的码农好朋友纷纷找我报税。我一看工资单,惊呆。“我知道 Facebook 工资高,但是一帮二十二三岁的键盘侠,本科刚毕业,年薪人民币 110 万,太夸张了!”“我明年涨工资,30%,不过我给公司创造的价值更多。”…

那个卖了房子去大理的姑娘,4个月以后又回来了……

那个卖了房子去大理的姑娘,4个月以后又回来了……

一、那个卖了房子去大理的姑娘,4个月以后又回来了……也许,我们每个人的内心深处都有一个梦:到一个安静美好的小地方,开一家小店,就这么慢悠悠地晃过这一生……不过,你真的确定这些是你想要的吗?1我一个女文青朋友年前卖了苏州的房子,去云南大理追求…

一条徐沪生比papi酱更有价值,短网址真的比直播更适合内容创业者吗?

一条徐沪生比papi酱更有价值,短网址真的比直播更适合内容创业者吗?

[ ft12短网址导读 ] 与papi酱的过气构成鲜明对比的是,短视频职业却越来越火,被称为直播之后的又一个内容创业风口,新老互联网巨头都争着往里面砸钱。用户为什么俄然对短视频产生了如此激烈的需求?真实能够依靠的盈利模式又是什么?…

智慧城市建设值得思考的三大趋势

智慧城市建设值得思考的三大趋势

摘要:才智城市是一个跨产业、跨领域、跨组织、跨技术的概念,全球对才智城市的建设与发展都在处在理论到实践的探索期间。才智城市的建设需要多部门、多组织的协同创新,由众多的聚焦某类问题解决的创新企业集合来共同推动。Amit Garg从投资人的角度…

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

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

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

发表评论

访客

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