J'ai cette application web qui va être toute technologique côté client (HTML, CSS, JavaScript / AngularJS, etc ...). Cette application web va interagir avec l'API REST afin d'accéder et de modifier les données. À l'heure actuelle, il est indécis sur le type de système d'authentification que l'API REST va utiliser.
D'après ma compréhension, tout type de système d'authentification API (clés API, OAuth 1/2, etc ...) va avoir certaines données qui doivent être gardées secrètes sinon l'accès peut être compromis. Pour les clés API, les clés elles-mêmes doivent être secrètes, pour OAuth 2, les jetons secret client / accès / rafraîchissement doivent être gardés secrets, je suis sûr que quelques-unes des 4 clés impliquées dans OAuth 1 doivent être gardées secrètes (pas trop d'expérience avec OAuth 1). J'ai essayé de penser s'il y avait un moyen de stocker ces trucs secrets dans une application Web pure côté client sans couche intermédiaire du côté serveur.
J'ai essayé de penser à cela et je ne peux penser à aucun endroit pour le faire. Je veux dire que je ne peux pas le stocker en javascript car n'importe qui peut simplement afficher la source ou ouvrir la console et obtenir les données. Je ne suis pas sûr à 100% de la sécurité de localStorage et si les utilisateurs peuvent accéder / modifier ces données. Même si le stockage local était sécurisé, les deux façons dont je peux penser d'y intégrer des données ne le sont pas. Une façon consiste simplement à stocker les données dans le code source javascript, ce qui est la chose la moins sûre à laquelle je puisse penser. Maintenant, si j'utilisais quelque chose comme OAuth 2 dans lequel l'api restante me donnerait les jetons, ce ne serait toujours pas aussi sûr (mieux que la première option) parce que ces jetons seraient retournés sous forme de texte brut que quiconque peut voir le les demandes que l'ordinateur fait pourraient voir.
Existe-t-il un moyen pour qu'une application complètement exécutée côté client puisse stocker des données secrètes en toute sécurité sans une sorte de couche intermédiaire côté serveur?