我需要使用令牌认证保护由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请求没有令牌,但服务器可以处理它们。
我应该从哪里开始查找?