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

WebSocket 的鉴权授权方案

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

引子

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短网址】2017年9月27日消息,FT12短网址获悉,日前,网易严选发布《海外及港澳台地域物流配送公告》,这意味着海外的消费者也能在网易严选停止购物且网易严选能直接把产品发送到海外消费者手上。该公告指出,值此中秋佳节之际,网易严选...

理解短网址在移动互联网的作用

理解短网址在移动互联网的作用

引言这几天无事,仔细研究了一下移动互联网的发展趋势以及在这个过程中出现的每个新鲜事物。然后我发现了短网址在移动互联网的发展中有着不可替代的作用。顾名思义,短网址就是提供网址缩短服务,使得长链接能以比较美观的短链接的形式在互联网以及移动营销中...

淘宝&支付宝:连续一段时间未登录将销号

淘宝&支付宝:连续一段时间未登录将销号

日前阿里巴巴对旗下淘宝、支付宝平台的服务协议进行了修改,对于用户的权利和义务进行了更细致的界定,同时规定在淘宝、支付宝平台的非活跃用户在一定时间之后将会进行销号处理。淘宝平台方面,此次新增加规定,用户不得以任何方式转让,否则淘宝平台有权追究...

国美2.16亿领投爱空间C轮 争取3年要破100亿魔咒

国美2.16亿领投爱空间C轮 争取3年要破100亿魔咒

【FT12短网址资讯】爱空间总算拿到了来自国美的C轮2.16亿人民币融资,这笔钱距其上一轮融资现已整整一年半。这一年半里,全部互联网家装职业跟本钱市场一样由极盛转冷落,各家都在战略紧缩练内功。爱空间作为最初互联网家装的领头羊,沉寂以后,也甩...

Flink原理与实现:架构和拓扑概览

Flink原理与实现:架构和拓扑概览

架构要了解一个系统,一般都是从架构开始。我们关心的问题是:系统部署成功后各个节点都启动了哪些服务,各个服务之间又是怎么交互和协调的。下方是 Flink 集群启动后架构图。当 Flink 集群启动后,首先会启动一个 JobManger 和一个...

FT12短网址:腾讯,亚洲活跃的科技公司投资者

FT12短网址:腾讯,亚洲活跃的科技公司投资者

[ FT12短网址资讯 ] 根据CB Insights最新数据表明,随着亚洲科技生态系统的发展创新,企业风险投资者在私募市场扮演着更重要的角色,腾讯是亚洲活跃的科技公司投资者。根据CB Insights最新数据表明,随着...

发表评论

访客

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