2016-12-27 11 views
1

私たちはWebサーバーとPCクライアントを使ってWebサービスを構築しています。クライアントプログラムはWebサーバに接続し、WebSocketを介してデータを送信します。クライアントにはパスワードやログインなしでユーザーの操作はありません...顧客のアカウントに関連するデータを送信します...JWT、websockets、web-client-server

what we 'クライアントプログラムやトラフィックのハイジャックを防止するためにJWTを使用すべきかどうかが心配です...?

私たちが読んだすべての記事が....ブラウザ<> Webサーバではなく、プログラム<> Webサーバについてのあらゆる思考のための

感謝です!

+0

メッセージの信頼性を確認するには、JWTの署名(その目的(署名))を確認します。真ん中の男性が有効な署名を出すことができれば、署名鍵が漏洩していることを意味します。署名鍵はあなたが青から流出したものではないという前提があるので、このシナリオは起こりそうもありません。したがって、署名がうまくいけば、JWTは正しいソースから来て、改ざんされませんでした。対称鍵または秘密鍵でトークンに署名することができます。公開鍵を他のアプリに配布して、署名を検証します。 –

+0

JWTは認証の証明の後に発行されるべきです。識別方法がなく、問題が以前の場合、どのようにPCクライアントを識別しますか? – 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')); 
    } 
});