Mi piacerebbe che le mie API del server accettassero solo richieste dalla mia app, per evitare altri client "canaglia" del mio servizio.
Come ho capito, il modo per farlo sarebbe con un "certificato client" che l'app invia e che il server web è configurato per verificare.
Tuttavia, sto ospitando la mia app in Heroku, e credo che non sia possibile farlo, quindi cerco qualcosa che mi permetta di raggiungere questo obiettivo.
Ho pensato che forse avrei potuto avere una coppia di chiavi, in cui il client utilizza una chiave privata per firmare un determinato token concordato (più un salt casuale, in modo che la stringa crittografata sia sempre diversa) e il server utilizzi chiave pubblica per verificare il token (e rifiuta i sali duplicati per impedire la riproduzione). O forse il cliente firma l'intera richiesta con la sua chiave privata, o qualcosa del genere.
L'idea sarebbe che anche se qualcuno riesce a aggirare il nostro blocco SSL (con qualcosa come iOS kill switch, potenzialmente) e ispezionare il nostro traffico e capire come funziona la nostra API, non possono ancora chiamarci a meno che non invertano ingegnere il file binario per estrarre quel certificato / chiave privata. Capisco che è possibile farlo, sto solo provando a sopportare il maggior numero di barriere possibile.
Quali sono i modi migliori per farlo?
Grazie!
Daniel