Attualmente sto scrivendo un gioco multiplayer di rete che utilizza un sistema di lobby per trovare le partite disponibili per i giocatori. L'elenco delle corrispondenze disponibili è servito e aggiornato da un'applicazione web tramite una semplice API REST.
Ad esempio, quando un giocatore entra nella lobby e crea una nuova partita per gli altri giocatori, il gioco invierà una richiesta POST all'applicazione web, che aggiungerà la corrispondenza all'elenco. Per un altro esempio, se questo stesso giocatore decide di non voler ospitare una partita, farebbe clic su un pulsante che dice "cancella corrispondenza" o qualcosa del genere. Il gioco invierà una richiesta DELETE all'applicazione web, che rimuoverà la corrispondenza dall'elenco.
Per quanto riguarda la sicurezza, sono preoccupato che un giocatore intelligente sia in grado di capire come utilizzare l'API per la mia applicazione web tramite cURL (o qualche altro strumento per fare richieste HTTP) per inviare richieste maligne (come per esempio, rimuovendo la corrispondenza di qualcun altro dalla lista. Per dichiarare chiaramente i miei obiettivi: voglio che la mia applicazione web sia in grado di verificare che le richieste in arrivo provengano dal gioco, e non da qualche altra applicazione come cURL, prima di elaborarle.
Il mio istinto mi dice che la soluzione migliore è usare un token JWT. Il gioco si autenticherà automaticamente all'applicazione web, che genererà un token e lo consegnerà al gioco. Quindi, il gioco fornirà il token ogni volta che effettua una richiesta. La domanda è: come faccio a far sì che il gioco si autentichi (e, quindi, riceva un token dall'app Web) in un modo che un utente malintenzionato non potrebbe fare usando uno strumento come cURL?