Tutto ciò che l'app javascript può fare nel client del browser può essere visto da qualcun altro per accedere al server API REST back-end esterno all'app.
In realtà, il fatto che l'app client sia implementata in JavaScript è insignificante - qualsiasi applicazione eseguita su una macchina fuori dal tuo controllo non può essere completamente affidabile. È un po 'più difficile decodificare il codice nativo exectuable rispetto a ViewSource su un'app javascript, ma non impossibile. Mai fare affidamento sulla sicurezza dall'oscurità.
La soluzione migliore è quella di avere l'applicazione del browser richiede all'utente finale di accedere e ottenere un token di autenticazione da un provider di identità di fiducia, e presente che auth token ogni richiesta l'applicazione browser alla API REST. L'API REST può quindi convalidare il token di autenticazione per verificare se proviene da un provider attendibile e se l'utente indicato all'interno del token è autorizzato a utilizzare l'API REST.
Questo collega l'autorizzazione delle chiamate API REST all'utente anziché all'app e utilizza segreti (credenziali utente) che non risiedono nell'app browser per essere visualizzati da tutto il mondo.
Con questa soluzione, è possibile limitare l'accesso all'API REST in base al quale l'utente sta effettuando la chiamata. Puoi ancora filtrare l'accesso in base all'app che sta effettuando la richiesta, ma questo dovrebbe essere un punto secondario, non il fattore di sicurezza principale, perché è più facile copiare la descrizione dell'applicazione rispetto alle credenziali dell'utente.
Un'altra opzione potrebbe essere quella di fare in modo che il server Web funga da proxy per il servizio API REST in modo che l'app browser debba passare attraverso il server Web per ottenere i dati dall'API REST. Questo potrebbe essere fattibile se l'app del browser mantiene lo stato della sessione che il server Web può verificare per determinare che la richiesta provenga dall'app bona-fide e non da qualcun altro. Anche se ciò potrebbe consentire di mantenere la tua API REST fuori dalla rete pubblica, in realtà non cambia il tuo problema di autorizzazione - lo hai appena spostato sul server web dove potresti avere più contesto di sessione per distinguere una richiesta in-app da una richiesta interlocutoria. Tenuo nel migliore dei casi, non consigliato a meno che tu non sia davvero sicuro dello stato della sessione dell'app.
Indipendentemente da ciò che la soluzione che si sceglie, resta il fatto che se la vostra API REST è accessibile da un'applicazione client-side (browser o altro), si tratta di un'API REST pubblica e deve essere trattato (e fortificata) in quanto tale. Non esiste una API Web privata a cui è possibile accedere da un computer client.
perché devono essere su 2 server diversi? stai usando lingue diverse? – mpm
No, la stessa lingua è utilizzata su entrambi i server. Ho messo il resto api su un server e il frontend su un altro server per motivi di scalabilità e separazioni di problemi. – Michael