Download - architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

Transcript
Page 1: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

Sicurezza orientata alle architetture (SOASec)Voltolini Pietro

Page 2: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

Cosa è stato analizzato

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

Springboot

Page 3: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

Cavalcata degli unicorni

Page 4: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

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 server3. Api Gateway: semplifica per gli sviluppatori la creazione, la pubblicazione, la manutenzione, il monitoraggio e la

protezione delle API su qualsiasi scala4. 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

Page 5: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

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.

Page 6: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

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

Page 7: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

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.

Page 8: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

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.

Page 9: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

Creazione del pool di utenti

Page 10: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

Generazione del client app id

Page 11: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

Modifica del file config.js

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

Page 12: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

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

Page 13: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

Generazione del token

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

Page 14: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

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

Page 15: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

Creazione della tabella Percorsi tramite Dynamo DB

Tabella che contiene tutte le richieste fatte

Page 16: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

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 )

Page 17: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

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.

Page 18: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

Distribuzione dell’Api RESTful attraverso API Gateway

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

Page 19: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

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

Page 20: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

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.

Page 21: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

NodeJS e AWS Cognito: Gestione del pool di utenti

Page 22: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

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 )

Page 23: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

Installazione di NodeJs e aws-amplify nella cartella del progettp

Page 24: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

Configurazione del userpool tramite Cognito

Page 25: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

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

Page 26: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

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

Page 27: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

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

Page 28: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

Modifica del file register.js

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

Page 29: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

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

Page 30: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

Gestione della fase di login e navbar

Modifica file Login.js

Page 31: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

Gestione della fase di login e navbar

Modifica file App.js

Page 32: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

Gestione della fase di login e navbar

Modifica file Navbar.js

Page 33: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

Gestire recupero della password dal file forgotpassword.js

Page 34: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

Settare la nuova passeord dal file forgotpasswordverification.js

Page 35: architetture (SOASec) Sicurezza orientata alle · 2020. 3. 24. · Amazon Web Services (AWS) Servizi che offre AWS e che sono stati utilizzati in questo progetto 1. Cognito: Fornisce

Cambio della password tramite changepassword.js