architetture (SOASec) Sicurezza orientata alle 2020. 3. 24.آ  Amazon Web Services (AWS) Servizi...

download architetture (SOASec) Sicurezza orientata alle 2020. 3. 24.آ  Amazon Web Services (AWS) Servizi che

If you can't read please download the document

  • date post

    08-Sep-2020
  • Category

    Documents

  • view

    0
  • download

    0

Embed Size (px)

Transcript of architetture (SOASec) Sicurezza orientata alle 2020. 3. 24.آ  Amazon Web Services (AWS) Servizi...

  • Sicurezza orientata alle architetture (SOASec) Voltolini Pietro

  • Cosa è stato analizzato

    1. Utilizzo dei servizi AWS per la realizzazione di due applicazioni web. 2. Analisi del protocollo OAuth 2.0 Authorization Code Grant 3. Realizzazione di un Authentication Server e un ResourceServer sfruttando

    Springboot

  • Cavalcata degli unicorni

  • Amazon Web Services (AWS)

    Servizi che offre AWS e che sono stati utilizzati in questo progetto

    1. Cognito: Fornisce tutte le funzionalità e la sicurezza legate all’autenticazione degli utenti 2. Lambda: consente di eseguire codice senza dover effettuare il provisioning né gestire server 3. Api Gateway: semplifica per gli sviluppatori la creazione, la pubblicazione, la manutenzione, il monitoraggio e la

    protezione delle API su qualsiasi scala 4. S3 è un servizio di storage di oggetti che offre scalabilità, disponibilità dei dati, sicurezza e prestazioni

    all'avanguardia nel settore. 5. DynamoDB: DB è un database che supporta i modelli di dati di tipo documento e di tipo chiave-valore che offre

    prestazioni di pochi millisecondi a qualsiasi scala. Si tratta di un database durevole, multimaster, multiregione e completamente gestito che offre sicurezza integrata, backup, ripristino e cache in memoria per applicazioni Internet

  • AWS COGNITO

    Amazon Cognito permette di aggiungere strumenti di registrazione, accesso e controllo degli accessi alle app Web e per dispositivi mobili in modo rapido e semplice. Amazon Cognito permette di ricalibrare le risorse per milioni di utenti e supporta l'accesso con provider di identità social quali Facebook, Google e Amazon e provider di identità aziendali tramite SAML 2.0. La funzionalità principale è quella di poter gestire dei pool di utenti e occuparsi della generazione dei token.

  • Cavalcata degli unicorni

    L'applicazione mostrerà agli utenti un'interfaccia utente basata su HTML tramite la quale indicare il luogo in cui desiderano essere prelevati e si interfaccerà sul back-end con un servizio Web RESTful per inviare la richiesta e spedire un unicorno che si trovi nelle vicinanze. L'applicazione fornirà agli utenti la possibilità di registrarsi al servizio e di accedervi prima di richiedere le cavalcate

  • Creazione del bucket di contentimento con S3

    In questa prima fase è necessario creare attraverso aws un contenitore dove poter caricare tutti i file HTML, CSS, JS.

  • Gestione degli utenti attraverso Cognito

    Per confermare l'account, gli utenti tornano sul sito e immettono l'indirizzo e-mail e il codice di verifica ricevuto. Si può confermare gli account utente tramite la console Amazon Cognito se si vogliono utilizzare indirizzi e-mail fittizi per la verifica.

    Una volta che dispongono di un account confermato (con il processo di verifica tramite e-mail o con la conferma manuale tramite la console), gli utenti saranno in grado di effettuare l'accesso. Quando effettuano l'accesso, gli utenti immettono il proprio nome utente (o e-mail) e la password. Quindi, una funzione JavaScript comunica con Amazon Cognito, esegue l'autenticazione tramite il protocollo Secure Remote Password (SRP) e riceve un set di token JWT (JSON Web Token). I token JWT contengono le attestazioni relative all'identità dell'utente e verranno utilizzati nel prossimo modulo per l'autenticazione rispetto all'API RESTful che hai creato con Amazon API Gateway.

  • Creazione del pool di utenti

  • Generazione del client app id

  • Modifica del file config.js

    Il file config.js rappresenta il punto di congiunzione tra il bucket e Cognito

  • Registrazione e autenticazione

    A questo punto una volta configurata l’app con il collegamento al pool di utenti si possono gestire tutte le registrazioni e le autenticazioni

  • Generazione del token

    Una volta loggato Cognito genererà un token che permetterà all’utente di poter usufruire del servizio essendo autorizzato.

  • Creazione back-end serverless del servizio

    Qui ho AWS Lambda e Amazon DynamoDB per creare un processo back-end per gestire le richieste dell’applicazione Web.

    La funzione Lambda che verrà chiamata ogni volta che un utente richiede un unicorn. La funzione selezionerà un unicorno, registrerà la richiesta in una tabella DynamoDB e quindi risponderà all'applicazione front-end con i dettagli sull'unicorno in fase di invio

  • Creazione della tabella Percorsi tramite Dynamo DB

    Tabella che contiene tutte le richieste fatte

  • Creazione di un ruolo IAM per la funzione Lambda

    A ogni funzione Lambda è associato un ruolo IAM, che definisce con quali altri servizi AWS alla funzione è concesso interagire. Il ruolo creato sarà connesso alla funzione lambda e alla tabella DynamoDB creata in precedenza utilizzando il suo codice ARN (Amazon Resource Name )

  • Creazione della funzione Lambda per gestire le richieste

    AWS Lambda eseguirà il tuo codice in risposta a eventi come una richiesta HTTP. In questa fase procederò alla creazione della funzione principale che elaborerà le richieste API dall'applicazione Web per inviare un unicorno. Alla funzione verrà associato il ruolo creato attraverso IAM.

  • Distribuzione dell’Api RESTful attraverso API Gateway

    Creazione dell’api mediante API Gateway e creazione dell’autorizzazione per il pool di utenti Cognito

  • Creazione della risorsa /ride e del metodo POST

    A questo punto si andranno a collegare l’autorizzazione WildRydes creata in precedenza e la funzione lambda

  • Aggiornamento del file config.js

    In questo ultimo step è necessario aggiornare il file config.js presente nel bucket S3 per richiamare l’api appena creata attraverso l’url generato.

  • NodeJS e AWS Cognito: Gestione del pool di utenti

  • Premessa

    In questa applicazione ho voluto provare a hostare l’applicazione in locale utilizzando NodeJS e in più a gestire la sessione attraverso AWS Cognito utilizzando anche la libreria aws-amplify per gestire l’autenticazione(che gestisce la creazione dei toke )

  • Installazione di NodeJs e aws-amplify nella cartella del progettp

  • Configurazione del userpool tramite Cognito

  • Settare il dominio tramite Cognito in modo che la registrazione abbia successo

  • Modifica del file config.js per combinare il pool di utenti

  • Modifica del file index.js

    Per prima cosa bisogna importare Auth da aws-amplify e il file config. Successivamente si può passare la configurazione del file config

  • Modifica del file register.js

    Aggiunta delle informazioni per far si che ci possa registrare e aggiungersi al pool di utenti di Cognito

  • Aggiunta al pool di utenti

    Gli utenti verranno aggiunti qui e sarà necessaria la conferma via mail, che conterrà il link creato prima per confermare la registrazione

  • Gestione della fase di login e navbar

    Modifica file Login.js

  • Gestione della fase di login e navbar

    Modifica file App.js

  • Gestione della fase di login e navbar

    Modifica file Navbar.js

  • Gestire recupero della password dal file forgotpassword.js

  • Settare la nuova passeord dal file forgotpasswordverification.js

  • Cambio della password tramite changepassword.js