2015-12-17 1 views
3

Мне нужно защитить сервисы, экспортируемые адаптером базы данных 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 не имеют токена, но у сервера нет проблем, заботясь о них.

С чего начать?

ответ

0

Возможно, я нашел проблему. Когда я использую приведенный ниже фрагмент [до io.on()] для блокировки socket.io down, он работает.

io.use(socketioJwt.authorize({ 
    secret: new Buffer(process.env.AUTH0_CLIENT_SECRET, 'base64'), 
    audience: process.env.AUTH0_CLIENT_ID, 
    handshake: true 
})); 

Теперь мне нужно понять, как заставить клиента и сервер играть хорошо.

1

Лучший способ принудительной аутентификации - использовать feathers-hooks. У нас также есть руководство о том, как вы можете сделать authentication и authorization.

Наши документы немного запутаны на данный момент, поэтому их легко пропустить, но мы скоро это исправим!

+0

Правильно ли я понимаю вас, что рекомендуется использовать паспорт-auth0 и т. Д.? Когда вы настроили приложение для использования перьев-паспортов после «отдыха» и «сокета» и крючков, как «отдых», так и сокетка требуют проверки подлинности? Эти app.configure все, что необходимо для создания правильного «стека»? Я не знаю, запутан ли ваша документация. Я занимаюсь Node.JS в течение двух недель. Обилие пакетов по-прежнему подавляющее. Я как бы выяснил, что один из способов заставить аутентификацию запросов socket.io, но не заставил мой клиент и сервер играть хорошо. –

Смежные вопросы