JWT、WebSocket和客户端服务器通过web

JWT、WebSocket和客户端服务器通过web,websocket,jwt,Websocket,Jwt,我们正在用web服务器和PC客户端构建一个web服务。客户端程序连接到web服务器并通过WebSocket发送一些数据。。客户端中没有用户交互,没有密码或登录。。。它只是发送一些与客户帐户相关的数据 我们关心的是,我们是否应该使用JWT来防止客户端程序或流量劫持 我们读过的所有文章都是关于浏览器web服务器的,但不是关于程序web服务器的 谢谢你的任何想法 没错,为了避免其他客户端向您的websocket服务器发出请求,您可以使用JWT。你没有提到你在使用什么技术。下面是一个使用express和

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

我们关心的是,我们是否应该使用JWT来防止客户端程序或流量劫持

我们读过的所有文章都是关于浏览器web服务器的,但不是关于程序web服务器的


谢谢你的任何想法

没错,为了避免其他客户端向您的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'));
  }
});

为了验证消息的真实性,您需要验证JWT签名——这就是它的目的(签名的目的)。如果中间的人能够产生一个有效的签名,那意味着签名密钥泄露了——这种情况应该是不太可能发生的,因为假设签名密钥不是泄露出来的东西。因此,如果签名没有问题,JWT来自正确的来源,并且没有被篡改。您可以使用对称密钥或私钥对令牌进行签名。将您的公钥分发给其他应用程序以验证签名。应在身份验证证明后颁发JWT。如果您没有识别方法,那么您的问题是先前的,您将如何识别您的PC客户端?