Ho questa applicazione web che sarà tutta la tecnologia lato client (HTML, CSS, JavaScript / AngularJS, ecc ...). Questa applicazione web interagirà con l'API REST per accedere e modificare i dati. Al momento è indeciso su quale tipo di sistema di autenticazione utilizzerà l'API REST.
Da quanto ho capito, qualsiasi tipo di sistema di autenticazione API (chiavi API, OAuth 1/2, ecc ...) avrà alcuni dati che devono essere tenuti segreti, altrimenti l'accesso potrebbe essere compromesso. Per le chiavi API, le stesse chiavi devono essere segrete, per OAuth 2 il segreto del client / token di accesso / token di aggiornamento deve essere tenuto segreto, sono sicuro che alcune delle 4 chiavi coinvolte in OAuth 1 devono essere mantenute segrete (non troppa esperienza con OAuth 1). Ho cercato di pensare se esiste un modo per archiviare queste cose segrete in una pura applicazione web lato client senza una sorta di strato intermedio sul lato server.
Ho cercato di pensarci e non riesco a pensare a nessun posto dove farlo. Voglio dire, non riesco a memorizzarlo in JavaScript perché chiunque può semplicemente visualizzare la fonte o aprire la console e ottenere i dati. Non sono sicuro al 100% di quanto sia sicuro localStorage e se gli utenti possono accedere / modificare tali dati. Anche se l'archiviazione locale era sicura, i due modi in cui riesco a pensare di ottenere i dati non lo sono. Un modo è semplicemente archiviare i dati nel codice sorgente javascript che è la cosa più insicura a cui riesco a pensare. Ora se usassi qualcosa come OAuth 2 in cui il resto api stesso mi darebbe i token, non sarebbe ancora così sicuro (meglio della prima opzione) perché quei token verrebbero restituiti come testo normale che chiunque possa vedere il le richieste che il computer sta facendo potrebbero vedere.
Esiste un modo per fare in modo che un'applicazione completamente in esecuzione sul lato client sia in grado di archiviare in modo sicuro dati segreti senza una sorta di livello intermedio sul lato server?