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

WebSocket 的鉴权授权方案

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

引子

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

相关文章

PHP 进阶之路 - 亿级 pv 网站架构实战之性能压榨

本博客并非全部原创,其实是一个知识的归纳和汇总,里面我引用了很多网上、书上的内容。也给出了相关的链接。本文涉及的知识点比较多,大家可以根据关键字去搜索相关的内容和购买相应的书籍进行系统的学习。不对的地方大家予以批评指正。有人给我留言说,亿级...

人人网,微博等网站在分享url的时候都会转换成短链接,这样有什么好处?

比如 http://u6.gg/baidu【李卿的回答(9票)】:正如@sqybi 所说,初衷应该是微博类网站为了缩短字数,毕竟这些地方惜字如金。前几位都说到了垃圾外链的问题,其实这个并不是大问题,是可以用nofollow属性来处...

Go语言写的一个短网址服务

Go语言写的一个短网址服务

题图来自https://www.ft12.com/“缩址,又称短址、短网址、网址缩短、缩短网址、URL缩短等,指的是一种互联网上的技术与服务。此服务可以提供一个非常短小的URL以代替原来的可能较长的URL,将长的URL地址缩短。用户访问缩短...

首届品质电商节在杭启幕 深析新零售新品质新服务

首届品质电商节在杭启幕 深析新零售新品质新服务

[FT12短网址 ] 9月23日-9月25日,全国首届品质电商节在杭州余杭未来科技城盛大举办。百家精选品牌,500多款品质好物,三大主题场景馆与人工智能展区在现场呈现,国家质检部门领导、权威专家学者代表、众多互联网企业大咖参加本次...

我最想推荐的英语学习App:“词根词缀词典”

我认为学英语背单词分三个阶段:第一阶段死记硬背,基础词汇;第二阶段用尽各种方法背单词,谐音、词根词缀、词组搭配,积累5000-7000的词汇量;第三阶段返璞归真,觉得第二阶段总结的各种方法都好麻烦,觉得多读几遍最轻松愉快的,效果也好,觉得背...

FT12短网址改版说明:一次被迫的改版

FT12短网址改版说明:一次被迫的改版

FT12短网址上线已经六七年,期间服务了无数正常用户,也获得很多好评。FT12短网址使用了国内最稳定、快速的阿里云服务器,保障了短网址的长期可用性。另外,FT12短网址还是目前最安全的网址缩短服务提供商,其在网址安全方面,接入了腾讯电脑管家...

发表评论

访客

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