4

トークン認証を使用して、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);

Websocket へのアクセスもロックダウンする必要があります。いくつかの例を見つけました。以下は、理論的には 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 リクエストにはトークンがありませんが、サーバーは問題なくそれらを処理します。

どこから探し始めますか?

4

2 に答える 2

1

認証を強制する最良の方法は、feathers-hooksを使用することです。また、認証承認を行う方法に関するガイドもあります。

現在、私たちのドキュメントは少し混乱しているため、見落としがちですが、すぐに修正する予定です。

于 2015-12-19T07:17:54.420 に答える