javascript - Auth0 与 Socket.IO 强制认证

标签 javascript node.js socket.io auth0 feathersjs

我需要使用 token 身份验证保护 Feathers 数据库适配器导出的服务。我们为 REST 做了这个:

var authenticate = jwt({
  secret: new Buffer(process.env.AUTH0_CLIENT_SECRET, 'base64'),
  audience: process.env.AUTH0_CLIENT_ID
});

为防止未经身份验证的客户端访问 REST 服务,我们会:

app.use('/api', authenticate);

对 websockets 的访问也应该被锁定。我找到了一些例子。理论上,下面应该启用 socket.io 的身份验证。

app.configure(feathers.socketio(function(io) {
  io.on('connection', socketioJwt.authorize({
    secret: new Buffer(process.env.AUTH0_CLIENT_SECRET, 'base64'),
    audience: process.env.AUTH0_CLIENT_ID,
    timeout: 5000 // 5 seconds to send the authentication message
  })).on('authenticated', function(socket) {
//    console.log('token: ' + socket.decoded_token.name);
    socket.emit('news', { hello: 'world' });
    socket.on('my other event', function (data) {
      console.log(data);
    });
  });
}));

然而,这并没有发生。客户端 socket.io 请求没有 token ,但服务器没有问题处理它们。

我从哪里开始寻找?

最佳答案

强制身份验证的最佳方法是使用 feathers-hooks .我们还有一个关于如何做的指南 authenticationauthorization .

我们的文档目前有点困惑,因此很容易遗漏,但我们会尽快修复!

关于javascript - Auth0 与 Socket.IO 强制认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34346312/

相关文章:

javascript - 列表 : Observable on array map

node.js - K8s 在 Mac OS 上连接到 Cassandra 时出现问题(通过 Node.js)

javascript - 如何为 Amazon ECS 上托管的服务器运行 Node.js 工作线程?

node.js - Socket.io 和 Express ERR_SSL_VERSION_OR_CIPHER_MISMATCH

javascript - socket.io:客户端发出回调永远不会触发

jquery - 使用 Electron 时无法加载socket.io.js文件

javascript - 在 Angular8 中将 HTTP 响应 json 转换为 typescript 对象

javascript - 单击以使用 jquery 或 javascript 打开新的 Segment

javascript - jquery(tab系统)计算高度并将高度添加到div

node.js - 无法在 Windows 上写入生成的 child_process 的标准输入