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

WebSocket 的鉴权授权方案

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

引子

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

相关文章

公司监督将人类工人变成了真菌

共同的智慧告诉我们,随着时间的推移,科幻小说很快就成为现实。电影Gattica描绘了遗传操作技术进步的世界,使得后代的遗传增强对于谁负担得起是很常见的,就业由遗传概况严格决定,从而减少了“无价值”,即没有遗传改良的人到劳动力市场的二等经济地...

群雄逐鹿的云计算时代,谁能独领风骚

群雄逐鹿的云计算时代,谁能独领风骚

[ FT12短网址 ] 由德意志银行数据显示,中国国内公有云市场2016年增长率为150-200%。国内的云服务器市场是一超多强的局面,阿里云领跑,腾讯紧随,其次亚马逊和微软,之后是UCloud,以及是其他国内玩家,如华为云和中国...

阿里巴巴的大数据之战

本文作者:李娜  2017年6月1日,菜鸟与顺丰因快递柜数据惹起一场互相封杀的大战,震动了全体业界。  固然在国度邮政局的参与调停下,两边的营业互助和数据传输已于6月3日临时规复,但这场3Q大战今后,又一次将有数用户卷入的巨擘互杀,有可能成...

Google收购ft12.com域名推短网址服务 收购后不调整

凤凰网科技讯北京时间7月19日音讯,据科技博客ZDNet报导,google近来收买了ft12.com域名,将用来为google商品供给短网址效劳。和短域名效劳网站Bitly以及TinyURL相同,google曾在2009年推出其短网址商品G...

百度的新赌注:语音由DuerOS开路,无人车由Apollo撑腰

[ FT12短网址 ] 李彦宏的中心赌注即是两个:语音和无人车。详细到战术层面,语音由DuerOS开路,无人车由Apollo撑腰。明日,李彦宏将揭晓他为这两个赌注下了啥新筹码。 那么,baidu都在这两个渠道上现已倾泻了...

权限申请审批流程设计

权限申请审批流程设计

摘要目前Do平台下各类资源比较多(像任性、驾驶舱、烽火、数据集市等等),对应的各种角色也比较多,需要对do平台的每个用户进行权限控制。Do平台功能权限申请之前都是通过发送邮件的方式提交申请,对于审批人来说,工作较为繁琐,容易出错。为方便审批...

发表评论

访客

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