Couverture de l'article Uploader directement dans GCS sans authentification
Retour aux articles

L'agence

WanadevStudio

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 :

Commentaires

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

  • Couverture de l'article Event Bus : Le secret d'une architecture Symfony réellement découplée
    Event Bus : Le secret d'une architecture Symfony réellement découplée

    Il y a 4 semaines

    Imaginez : votre utilisateur clique sur "Commander". En coulisses, le domaine Stock doit décrémenter les quantités, le domaine Facturation doit générer une facture, et le domaine Notification doit envoyer un email de confirmation. Trois domaines, une seule action... et un spaghetti de dépendances en perspective. 🍝

    Et si ces domaines pouvaient collaborer sans jamais se connaître ?

    C'est exactement ce que permet l'Event Bus. Mais avant de foncer tête baissée, une question se pose : Symfony propose déjà l'EventDispatcher pour gérer les événements. Alors pourquoi introduire un nouveau concept ?

    Spoiler : ce ne sont pas les mêmes outils, et les confondre peut vous coûter cher.

    Dans cet article, nous allons démystifier leurs différences et découvrir comment l'Event Bus de Symfony Messenger vous permet de construire une architecture réellement découplée.

    Ce que vous allez apprendre :

    • Les différences fondamentales entre EventDispatcher et Event Bus
    • Quand utiliser l'un plutôt que l'autre
    • Comment configurer un Event Bus avec Symfony Messenger
    • Créer une architecture événementielle découplée
  • Couverture de l'article CQRS avec Symfony Messenger : Domptez la complexité de vos applications
    CQRS avec Symfony Messenger : Domptez la complexité de vos applications

    Il y a 1 mois

    Vous êtes-vous déjà retrouvé face à un controller Symfony surchargé qui gère à la fois la validation, la logique métier, la persistence et les réponses HTTP ? Si oui, le CQRS est fait pour vous !

    Le CQRS (Command Query Responsibility Segregation) est un pattern architectural qui sépare clairement les opérations d'écriture (Commands) et de lecture (Queries). Combiné avec Symfony Messenger, il vous permet de :

    • Organiser votre code de manière claire et maintenable
    • Séparer les responsabilités pour respecter les principes SOLID
    • Valider vos données avant même qu'elles n'atteignent votre logique métier
    • Gérer les transactions de base de données de manière élégante
    • Préparer votre application pour l'asynchrone sans effort

    Dans cet article, nous allons explorer les Commands (écriture) et les Queries (lecture) à travers un exemple concret de gestion de bibliothèque.

  • Couverture de l'article LockPass : automatiser la sauvegarde des mots de passe
    LockPass : automatiser la sauvegarde des mots de passe
    Développement

    Il y a 3 mois

    Chez Wanadev, on a récemment changé de gestionnaire de mot de passe. On est passés de la solution états-unienne Zoho Vault à LockPass, édité par l'entreprise française LockSelf.

    Aussi fiable que puisse être le prestataire choisi, il est essentiel pour nous d'avoir une sauvegarde de nos mots de passe en dehors de chez lui pour ne pas nous retrouver dans la panade le jour où il y a un souci.

  • Couverture de l'article Figma Make : enfin une passerelle prometteuse entre design et code grâce à l'IA
    Figma Make : enfin une passerelle prometteuse entre design et code grâce à l'IA

    Il y a 8 mois

    Depuis quelques années, les outils d'IA pour générer des intégrations d'interfaces à partir de maquettes fleurissent. On en a testé plusieurs chez WanadevDigital : de Locofy à Uizard, en passant par Framer AI. Tous ont leurs qualités, mais jusqu’ici, il manquait un vrai pont stable entre les intentions du designer et la réalité du code front.

    L’arrivée de Figma Make change la donne. Et si je devais résumer son impact en une phrase : ça fonctionne, et ça fonctionne pour tout le monde, designers, développeurs et intégrateurs !

  • Couverture de l'article Maîtriser la traduction (i18n) dans un projet web - Partie 1 : Configurer proprement
    Maîtriser la traduction (i18n) dans un projet web - Partie 1 : Configurer proprement

    Il y a 11 mois

    Mettre en place l'internationalisation (i18n) dans un projet web peut sembler simple. Cependant, de nombreux projets se retrouvent avec des configurations de traduction mal gérées, difficiles à maintenir ou à faire évoluer à mesure que l'application grandit. Une stratégie i18n robuste est essentielle pour offrir une expérience utilisateur fluide dans plusieurs langues.

    Je vous décris ici, les pratiques que nous avons établies chez Wanadev au fil des années d'expérience pour mettre en œuvre et gérer les traductions dans les projets Vue. Bien que les exemples soient spécifiques à Vue, la plupart de ces pratiques peuvent être appliquées à n'importe quel framework.

  • Couverture de l'article Maîtriser la traduction (i18n) dans un projet web - Partie 2 : Conseils pour une localisation gérable et évolutive
    Maîtriser la traduction (i18n) dans un projet web - Partie 2 : Conseils pour une localisation gérable et évolutive

    Il y a 11 mois

    Dans la partie 1, nous nous sommes concentrés sur la mise en place d'une base solide pour la gestion des traductions dans un projet Vue. Maintenant que votre système de traduction est opérationnel, il est temps d'examiner de plus près comment structurer, gérer et faire évoluer vos fichiers de traduction de manière efficace.

    Cette partie couvrira les bonnes pratiques que nous utilisons chez Wanadev pour créer des clés de traduction maintenables, éviter les pièges courants et garantir que vos fichiers de traduction restent propres et évolutifs au fur et à mesure que votre projet grandit.