仅允许连接sails.js中的授权套接字

phev8

我正在尝试在sails.js后端中为socket.io客户端实现某种安全性(使用版本0.12.x)。为实现此目的,我尝试为没有适当cookie(预先没有授权的会话)的客户端阻止成功的握手,或者通过使用password.js来查看客户端是否已通过身份验证的HTTP请求。

在Sails.js文档中,我发现这应该可行,但是我找不到任何提示,如何做到这一点。另一方面,在Internet上查找示例时,人们通常不使用安全套接字,也不使用某些旧版本的sails.js(<0.10)。

我到目前为止发现的最接近的是config/sockets.js

beforeConnect: function(handshake, cb) {
  if (handshake.headers.cookie) {
      console.log(handshake);
      // TODO: check session authorization
  } else {
     return cb(null, false);
  }
  return cb(null, true);
},

如果会话正确,这应该检查与握手一起发送的cookie。我很难弄清楚如何将sid从cookie映射到sails.js中的当前会话,以确定是否应允许连接。

问题:

  • 如果只允许少量客户端(应该允许40-50个动态生成的用户进行连接),并且没有其他人,socket.io的最佳安全实践是什么?
  • 我如何将sails.sid从cookie映射到活动会话?
  • 还有哪些其他配置可以达到我的目标(例如,设置一些策略,socket.io请求使用与http相同的中间件)的快捷方式?

感谢您的任何提示,链接或建议。

投票

如果只允许少量客户端(应该允许40-50个动态生成的用户进行连接),并且没有其他人,socket.io的最佳安全实践是什么?

我不知道什么是最好的。但是有两种常见的方法:基于令牌和cookie的身份验证

这是从https://auth0.com/blog/auth-with-socket-io/上获得的两种可视化效果

在此处输入图片说明

我真的很喜欢令牌方法,因为不需要会话存储。因此,服务器应用程序与客户端分离,并且也是无状态的。

我如何将sails.sid从cookie映射到活动会话?

令牌方法:签出jsonwebtoken当用户登录时,您会生成令牌并将其发送给客户端:

res.json({
    user: user,
    token: jwToken.issue({id : user.id })
});

此外,您还需要一个策略来检查令牌是否存在并对其进行验证:

jwToken.verify(token, function (err, token) {
    if (err) return res.json(401, {err: 'Invalid Token!'});
    req.token = token; 
    next();
});

我找到了完整的教程,可能会对您有所帮助:https : //thesabbir.com/how-to-use-json-web-token-authentication-with-sails-js/

如何用帆进行配置:您基本上只需在每个socket.io请求中发送令牌,然后在策略内检查令牌:

SailsJS-在JWT中使用sails.io.js

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

节点js中的套接字连接

来自分类Dev

在Sails.js中监听Unix套接字

来自分类Dev

在Sails.js中监听Unix套接字

来自分类Dev

Sails.js 0.10套接字未连接

来自分类Dev

Sails.js 0.10套接字未连接

来自分类Dev

如何在Sails 0.10.5中创建套接字连接

来自分类Dev

如何在Sails 0.10.5中创建套接字连接

来自分类Dev

Linux中的套接字连接

来自分类Dev

Sails.js中套接字的策略

来自分类Dev

如何允许更多同时的套接字连接?

来自分类Dev

使用Sails.js中的beforeConnect函数获取客户端套接字

来自分类Dev

Node.js套接字连接错误

来自分类Dev

表达js-套接字io连接

来自分类Dev

如何隐藏js套接字连接?

来自分类Dev

使用sails.io.js在Ionic应用程序与Sails API之间建立Web套接字连接

来自分类Dev

在Android中连接和断开套接字

来自分类Dev

Java中的密钥SSL套接字连接

来自分类Dev

在Python中打开SSL套接字连接

来自分类Dev

OpenShift中的网络套接字连接

来自分类Dev

连接中的Lua套接字错误

来自分类Dev

iOS:在套接字中读写(TCP连接)

来自分类Dev

在Android中连接和断开套接字

来自分类Dev

C中的队列套接字连接

来自分类Dev

连接中未定义的套接字

来自分类Dev

在原始套接字中连接功能?

来自分类Dev

无法在本机反应中连接套接字

来自分类Dev

如何关闭python中的套接字连接?

来自分类Dev

断开node.js中以前的客户端socket.io套接字的连接

来自分类Dev

node.js 子进程中的 socket.io-client Web 套接字连接失败