Rendere accessibili API solo dalla propria app

Pubblicità

Ibernato

Utente Èlite
Messaggi
4,342
Reazioni
2,049
Punteggio
133
Ciao,
ho un sistema client - server e ho implementato delle API.
Ora il mio scopo è quello di renderle accessibili solamente dalla mia app.
Ho letto JSON Web Token, ma ho un dubbio. Chiunque utilizza l'API di login per accedere, avrà il token per poi fare le altre richieste.

La mia idea era quella di utilizzare una chiave sul client e una sul server.
Sul client cifro i parametri da inviare, in un certo ordine, e li cifro con la chiave del client.
Sul server faccio l'operazione inversa. Il problema però è che chiunque faccia il reverse dell'app può capire come la chiave venga generata.
Quindi sarei costretto ogni tot ad aggiornare questa chiave, con il problema che se non tutti poi aggiornano l'app, non funziona niente più.

Avete dei consigli in merito?
 
Avete dei consigli in merito?

Puoi benissimo usare la crittografia. Però non capisco perchè dici che usando l'autenticazione, TUTTI sarebbero poi in grado di usarle. Per autenticarsi c'è bisogno di fornire delle credenziali e solo quelle accettate producono un token JWT, che poi userai per tutte le successive operazioni.

Inoltre potresti considerare l'utilizzo dei Websocket. Cioè si tratta di una cosa del tutto simile ai normali socket, su cui client e server possono inviare dati in maniera asincrona.

Nella pratica apri il Websocket, invii una sequenza di autenticazione. Dopo che client e server si sono riconosciuti a vicenda ( e anche qui potresti usare la crittografia a chiave asimmetrica ), il socket resta aperto e ognuno di loro può inviare dati all'altro quando gli pare.

La differenza pratica è che i websocket sono stateful, mentre le normali connessioni http sono stateless. Il vantaggio è l'eliminazione di qualsiasi tipo di cookie ( JWT o altro ) per mantenere l'identità e lo stato di autenticazione del client.
 
Pubblicità
Pubblicità
Indietro
Top