Upload/Download di BLOB con Google Cloud Storage e Spring Boot [GCP]

U

introduzione

Ciao a tutti ragazzi,

oggi ho deciso di realizzare un esempio molto comune nelle applicazioni. Voglio permettere agli utenti registrati nella mia piattaforma di fare l upload/download di un immagine del profilo utilizzatando delle API REST che si appoggiano a Google Cloud Storage. Per chi non conosce Google Cloud Storage consiglio assolutamente la lettura del mio precedente Articolo:

Introduzione a Google Cloud Storage [GCP]

requisiti

Riassumendo,

i requisiti che vogliamo implementare sono:

  1. AUTENTICAZIONE: solo gli utenti autenticati possono scaricare o caricare la propria immagine del profilo; Non stiamo quindi parlando di utenti autenticati con google ma autenticati con la mia piattaforma. L autenticazione che svilupperemo sara’ una classica autenticazione su DB utilizzando come DB MySql.
  2. AUTORIZZAZIONE: ovviamente PIPPO non può’ scaricare o sovrascrivere l immagine di PLUTO; Per permettere questo non possiamo utilizzare le ACL in quanto il requisito del punto 1) parla di autenticazione CUSTOM e non quella di Google utilizzata dalle ACL di GCS. Pertanto sara’ compito della logica business che andremo a scrivere garantire l autorizzazione in lettura e scrittura dell immagine del profilo dell utente loggato.

Andremo a sviluppare una soluzione basata su Spring Boot; per l autenticazione utilizzeremo Spring Security con sessione salvata su database utilizzando Spring Session. Le API che andremo a sviluppare saranno quindi le seguenti:

  • POST /login: Endpoint per autenticare l’utente. Una volta verificato che le credenziali postate sono corrette Spring Session in totale trasparenza andrà’  a salvare la sessione nel DB andando a valorizzare nella risposta l header x-auth-token con l ID della sessione. Le richieste per manipolare l immagine del profilo dovranno essere autenticate, ovvero Spring Security e Spring Session con un filtro andranno a verificare la presenza e la validità’ del token contenuto nell’ header x-auth-token.
  • GET /profile-picture: Ritorna l immagine del profilo dell utente loggato (header x-auth-token) se presente o ritorna un errore 404 NOT FOUND.
  • POST /profile-picture: Permette di fare l upload della propria immagine del profilo inviando nella richiesta il BLOB dell immagine come multi-part-form-data nel campo picture. Se già’ presente l immagine verra’ sovrascritta  con la nuova immagine.

Per lo storage utilizzeremo Google Cloud Storage: ho creato il bucket itc_profile_pictures. Ma se non usiamo le ACL di GCS come faremo a gestire l autorizzazione in modo da garantire che un utente possa caricare  e scaricare solo la propria immagine?

autorizzazione

Mettiamo le cose in file;

A proposito di me

Dario Frongillo

Fondatore di Italiancoders e dell iniziativa devtalks.
Software architect con un forte background in Java, Architettura REST, framework Spring , Database Design,progettazione e sviluppo di SPA e RIA Web application con framework Javascript. Attualmente mi occupo di sviluppo soluzioni software in ambito Banking e Finance: in particolare progettazione e sviluppo di applicativi web based per la realizzazione di sistemi di trading, interfacce con i mercati finanziari e di servizi real time.

I nostri Partner

Gli articoli più letti

Articoli recenti

Commenti recenti