J'implémente un téléchargement direct de fichiers de la machine cliente vers Amazon S3 via l'API REST en utilisant uniquement JavaScript, sans aucun code côté serveur. Tout fonctionne bien mais une chose me préoccupe...
Lorsque j'envoie une demande à l'API REST d'Amazon S3, je dois signer la demande et mettre une signature dans le dossier de l'API. Authentication
en-tête. Pour créer une signature, je dois utiliser ma clé secrète. Mais tout se passe du côté client, donc la clé secrète peut être facilement révélée à partir de la source de la page (même si j'obfusque/chiffre mes sources).
Comment puis-je gérer cela ? Et est-ce un problème ? Peut-être puis-je limiter l'utilisation d'une clé privée spécifique aux seuls appels d'API REST à partir d'une origine CORS spécifique et aux seules méthodes PUT et POST ou peut-être lier la clé au seul S3 et à un seau spécifique ? Peut-être existe-t-il d'autres méthodes d'authentification ?
La solution "sans serveur" est idéale, mais je peux envisager d'impliquer un certain traitement côté serveur, à l'exception du téléchargement d'un fichier sur mon serveur et de son envoi à S3.