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 sul tipo di sistema di autenticazione che l'API REST utilizzerà.
Da quanto ho capito, qualsiasi tipo di sistema di autenticazione API (API Keys, OAuth 1/2, ecc.) avrà determinati dati che devono essere mantenuti segreti altrimenti l'accesso può essere compromesso. Per API Keys, le chiavi stesse devono essere segrete, per OAuth 2 i token / token di accesso segreti / token di client devono essere tenuti segreti, 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 c'è un modo per archiviare questa roba segreta in una pura applicazione web lato client senza uno strato intermedio di sorta sul lato server.
Ho cercato di pensarci e non riesco a pensare a nessun posto dove farlo. Voglio dire, non posso memorizzarlo in javascript, perché chiunque può solo 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 lo storage locale era sicuro, i due modi in cui posso pensare di ottenere dati in esso non lo sono. Un modo è quello di archiviare i dati nel codice sorgente javascript che è la cosa più insicura che riesca a pensare. Ora, se stavo usando qualcosa come OAuth 2 in cui il resto della stessa API mi avrebbe dato i token, non sarebbe comunque così sicuro (meglio della prima opzione) perché quei token sarebbero restituiti come testo normale a chiunque possa vedere il richieste che il computer sta facendo potrebbe vedere.
C'è un modo per avere un'applicazione che sta eseguendo completamente lato client in grado di archiviare in modo sicuro pezzi segreti di dati senza una sorta di middle layer sul lato server?