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

WebSocket 的鉴权授权方案

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

引子

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

相关文章

ofo飞鸽代工厂探访:一分钟造4辆车

ofo飞鸽代工厂探访:一分钟造4辆车

共享单车竞争趋于“白热化”的同时,各地方正在赶紧办理整治乱停乱放。大家不禁思考,这些单车终究产于何处?怎样的流程才能让单车在短时间内大批下线?带着疑问,短网址资讯小编走进天津飞鸽自行车厂,对ofo出产线进行了实地看望。  在这家位于天津市区...

通过全文相似度来寻找相同或相似的代码

通过全文相似度来寻找相同或相似的代码

最近笔者在职的公司在不断的做App的包瘦身工作, 身边的同事们也研究出了各种各样实用的工具来辅助加快包瘦身的进程。在这么一个大环境下, 笔者突然又冒出一个很无聊的工具想法通过文本匹配来寻找相似的方法函数笔者给这个小工具取了一个非常传神且牛逼...

通过谷歌搜索引擎挖掘细分市场的一个案例

通过谷歌搜索引擎挖掘细分市场的一个案例

【FT12短网址资讯】这篇文章篇幅较长,无阅读门槛,比较适合想兼职赚点零花钱的程序员、想找场景学习编程的小伙伴以及没有创业点子的兄弟。全文4000字,完好读完大概需求10分钟。理论上来说,假如咱们仅仅是想赚点小钱,而不是想像马云爸爸一样经过...

从词典查词到文本检索

从词典查词到文本检索

十一假期大家过的还好吗?时间过得真快,距离上一次跟大家聊技术已经过了快三周了。老王很开心今天又能跟大家一起扯淡了,用一句通俗的话讲就是:老王想死你们了!今天准备跟大家聊的,乃是大名鼎鼎的文本检索技术。也就是大家天天都在用的“百度一下”。&n...

如何成为牛逼的产品经理?硅谷连续创业者这样说

编者注:Jim Patterson,“大麻界的Uber”Eaze的首席执行官,深谙产品之道的企业家,曾联合创办包括DineOnMe、AudioCaseFiles、Zinc在内的多家公司,并曾担任过诸多企业的首席产品官。  五年前,Clove...

准备将天津港保税区打造成跨境电商产业聚集地

记者23日从中国北方最大保税区天津港保税区获悉,在自贸区及跨境电商试点城市多重方针利好下,该区加速打造跨境电商工业聚集地。到本年4月底,跨境电商事务已累计完结61.7万单,交易额1.33亿元,会聚各类跨境电商试点公司77家。天津港保税区是天...

发表评论

访客

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