Estoy tratando de implementar una aplicación web que se conecta a Microsoft Azure para cargar archivos en su almacenamiento en la nube. La documentación que he estado siguiendo es Administrar blobs con JavaScript v12 SDK en un navegador. El tutorial para el cual está a continuación:
https://docs.microsoft.com/en-us/azure/storage/blobs/quickstart-blobs-javascript-browser
La documentación establece explícitamente que para usar las bibliotecas SDK de Azure en un sitio web, debe convertir su código para que funcione dentro del navegador mediante un paquete. El empaquetador sugerido es parcel-bundler
He construido bien el proyecto, y todo funciona en el navegador según los esquemas del tutorial, sin embargo, me encuentro con un problema cuando se trata de ocultar las claves API.
El tutorial alternativo, que explica la carga de blobs de Azure mediante Node.js, sugiere el uso de variables de entorno:
https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-nodejs
He hecho esto en el tutorial de mi navegador, sin embargo, cuando el paquete agrupa el proyecto, se puede acceder a las claves API completas al buscar en los archivos de origen, lo que sugiere que se revelan durante el proceso de compilación del paquete.
Parece que necesito usar un paquete ya que las funciones utilizadas para el uso del navegador no existen en el JavaScript del lado del cliente.
¿Cómo soluciono este problema?
No debe usar las claves API en su aplicación basada en navegador, ya que es un problema de seguridad importante (cualquier usuario puede echar un vistazo a los archivos JavaScript en el navegador y extraer las claves).
Lo que debe hacer en su lugar es tener un punto final de API al que su aplicación pueda llamar y este punto final de API debería devolverle un token de firma de acceso compartido (SAS). Luego, debe usar este token de SAS en su aplicación para interactuar con Azure Storage.