Uploader directement dans GCS sans authentification

Google Cloud offre depuis quelques années de plus en plus de services IT et se rapproche du leader de sa catégorie : AWS. Focus sur la solution de stockage cloud qui permet l'upload direct sans authentification utilisateur.

L'utilisation des services Google se font généralement à travers une authentification OAuth2. Deux systèmes sont donc possibles soit par autorisation utilisateur soit par compte de service (serveur à serveur).

Dans la plupart des cas ces mécanismes suffisent pour l'utilisation des solutions Google Cloud dans vos projets sauf si vous souhaitez que vos utilisateurs interagissent sans s'authentifier ou passer par l'un de vos serveurs.

Dans le cas d'un upload de fichiers directement dans la solution de storage Google, Vous allez devoir utiliser la solution api XML signed url.

Peu connue, cette solution va permettre de poster des fichiers dans les buckets Google sans authentification directe mais en restreignant l'accès.

Le principe de base consiste à transmettre au moment de l’upload des informations encodées qui vont permettre à Google de connaître le propriétaire, le bucket cible les contraintes d’upload.

Il s'agit de la policy et de la signature.

Upload dans Google Cloud : formez vos bataillons

Pour transmettre convenablement les bonnes informations, voici les principaux à retenir :

Les données seront transmises en POST avec le type multipart/form-data.

Champs recommandés :

  • bucket : nom du bucket GCS
  • key : nom du fichier
  • file : fichier uploadé
  • expires : date d'expiration des données envoyées
  • googleAccessId : compte de service utilisé
  • policy : chaine des contraintes
  • signature : chaine des contraintes encodées

La chaîne policy est une chaîne des contraintes de votre formulaire. Elle contient des données obligatoires et d'autres facultatives.

La signature est un hashage sha256 avec la clé privée de votre compte de service. Il est donc impératif de réaliser cette opération sur une partie serveur.

Pour utiliser votre clé de service vous devez d'abord la convertir au format .pem. ll est donc nécessaire pour créer la signature d'utiliser la clé.

En savoir plus

Une proposition d'implémentation en NodeJS :

Tags de
l'article

Sysadmin

Catégories de l'article

Développement

Commentaires

Il n'y a actuellement aucun commentaire. Soyez le premier !

Articles liés