Мне нужно защитить сервисы, экспортируемые адаптером базы данных Feathers, с аутентификацией по токенам. Мы сделали это для отдыха с:Auth0 с Socket.IO принудительной аутентификацией
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 не имеют токена, но у сервера нет проблем, заботясь о них.
С чего начать?
Правильно ли я понимаю вас, что рекомендуется использовать паспорт-auth0 и т. Д.? Когда вы настроили приложение для использования перьев-паспортов после «отдыха» и «сокета» и крючков, как «отдых», так и сокетка требуют проверки подлинности? Эти app.configure все, что необходимо для создания правильного «стека»? Я не знаю, запутан ли ваша документация. Я занимаюсь Node.JS в течение двух недель. Обилие пакетов по-прежнему подавляющее. Я как бы выяснил, что один из способов заставить аутентификацию запросов socket.io, но не заставил мой клиент и сервер играть хорошо. –