JWT,websockets和客户端服务器通过网络

时间:2016-12-27 19:44:44

标签: websocket jwt

我们正在使用Web服务器和PC客户端构建Web服务。客户端程序连接到Web服务器并通过websockets发送一些数据..客户端没有用户交互,没有密码或登录...它只是发送一些与客户帐户相关的数据...

我们关注的是我们应该使用JWT来防止客户端程序或流量劫持......?

我们阅读的所有文章都与浏览器相关<>网络服务器但不是程序<>网络服务器......

感谢您的任何想法!

1 个答案:

答案 0 :(得分:0)

这是正确的,为了避免其他客户向您的 websocket服务器提出请求,您可以使用JWT。你没有提到你使用的技术。这是一个使用express和socket.io的例子。
1)客户端在查询参数上发送 jwt 2)服务器验证 jwt 签名。

import express from "express";
import socket from "socket.io";
import http from 'http';

const server = http.createServer(app);  
const io = socket(server);
io.use( async (socket, next) => {   

  if(!socket.handshake.query)
    next(new Error('Not Authenticated'));

  const token = socket.handshake.query.token; 
  const encUsrId =  socket.handshake.query.pcClientToken; //maybe
  try{
      let hasErrors;

      if(token)
        hasErrors = await jwt.validateJSON(token); //validate with your own function.     

      next();
  }
  catch(ex){    
    next(new Error('Not a valid JWT'));
  }
});