2016-12-27 3 views
1

мы создаем веб-сервис с веб-серверами и клиентами ПК. клиентские программы подключаются к веб-серверу и отправляют некоторые данные по веб-сайтам. В клиенте нет взаимодействия с пользователем, нет паролей или логинов ... он просто отправляет некоторые данные, относящиеся к учетной записи клиента ...JWT, websockets и клиент-сервер через Интернет

что мы ' re обеспокоены, должен ли мы использовать JWT для предотвращения клиентской программы или захвата трафика или нет ...?

все статьи мы читали около браузеров <> веб-серверов, но не программы <> веб-серверы ....

спасибо за любые мысли!

+0

Для проверки подлинности сообщения вы подтверждаете подпись JWT - это его цель (подпись). Если человек посередине способен создать действительную подпись, значит, ключ подписывания просочился - этот сценарий должен быть очень маловероятным, поскольку предположение заключается в том, что ключ подписки - это не то, что вы просачиваетесь из-под синего. Поэтому, если подпись прекрасна, JWT пришел из правильного источника и не был подделан. Вы можете подписать токен с симметричным ключом или с помощью закрытого ключа. Распределите свой открытый ключ в других приложениях, чтобы проверить подпись. –

+0

JWT должен быть выпущен после проверки подлинности. Если у вас нет метода идентификации, тогда ваша проблема предшествует, как вы собираетесь идентифицировать клиентов вашего ПК? – pedrofb

ответ

0

Это верно, чтобы избежать запроса другого клиента на ваш сервер вы можете использовать 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')); 
    } 
}); 
Смежные вопросы