{"id":1747,"date":"2020-09-18T11:55:48","date_gmt":"2020-09-18T09:55:48","guid":{"rendered":"https:\/\/blog.besharp.it\/?p=1747"},"modified":"2022-09-07T12:30:15","modified_gmt":"2022-09-07T10:30:15","slug":"costruiamo-un-sistema-di-autenticazione-macchina-macchina-con-amazon-cognito","status":"publish","type":"post","link":"https:\/\/blog.besharp.it\/it\/costruiamo-un-sistema-di-autenticazione-macchina-macchina-con-amazon-cognito\/","title":{"rendered":"Costruiamo un sistema di autenticazione macchina-macchina con Amazon Cognito"},"content":{"rendered":"\n
\n
Sempre pi\u00f9 applicazioni, sia mobile che web, si affidano a servizi gestiti come Amazon Cognito per l’autenticazione e l’autorizzazione degli utenti. Cognito consente di sviluppare rapidamente applicazioni sicure, in linea con standard di sicurezza robusti ed affermati per l’autenticazione e l’autorizzazione degli utenti finali.<\/p>\n\n\n\n
Sfruttare un servizio completamente gestito consente agli sviluppatori di smettere di preoccuparsi del flusso di autenticazione e della gestione del pool di utenti, lasciandoli liberi di concentrarsi su ci\u00f2 che conta: la logica di business dei prodotti.<\/p>\n\n\n\n
A volte \u00e8 anche necessario implementare sistemi di autenticazione per consentire a servizi di terze parti di consumare API esposte dai servizi in sviluppo.<\/p>\n\n\n\n
Sebbene Cognito sia utilizzato principalmente per i flussi di autenticazione degli utenti, pu\u00f2 anche essere utilizzato per creare un sistema di autenticazione da macchina a macchina.<\/p>\n\n\n\n
In questo articolo descriveremo come Amazon Cognito pu\u00f2 essere utilizzato per autenticare un sistema client che necessita dell’accesso a un set di API sensibili esposte dal nostro servizio.<\/p>\n\n\n\n
Prima di approfondire la descrizione della soluzione, descriviamo i servizi coinvolti.<\/p>\n\n\n\n
Cos’\u00e8 Amazon Cognito?<\/h2>\n\n\n\n
Quando \u00e8 necessario implementare un sistema di autorizzazione e autenticazione su AWS, Amazon Cognito \u00e8 sicuramente la scelta migliore.<\/p>\n\n\n\n
Amazon Cognito consente di implementare un sistema di login – completo di verifica email e gestione della password – all\u2019interno di applicazioni web e mobile in modo rapido e semplice. \u00e8 in grado di gestire milioni di utenti e supporta l’accesso con Identity Provider social, come Facebook, Google e Amazon, cos\u00ec come Identity Provider aziendali tramite SAML 2.0.<\/p>\n\n\n\n
Inoltre Cognito supporta anche l’autenticazione a pi\u00f9 fattori e la crittografia dei dati at rest e in transito. Amazon Cognito \u00e8 idoneo HIPAA e conforme a PCI DSS, SOC, ISO \/ IEC 27001, ISO \/ IEC 27017, ISO \/ IEC 27018 e ISO 9001.<\/p>\n\n\n\n
Passiamo ora a descrivere i principali concetti di Cognito.<\/p>\n\n\n\n
Gli utenti sono gestiti tramite due tipi di pool, il centro del funzionamento di Amazon Cognito: User Pool e Identity Pool.<\/p>\n\n\n\n
User Pool<\/h2>\n\n\n\n
Uno User Pool (o pool di utenti) \u00e8 essenzialmente una user directory che consente di archiviare in modo sicuro gli attributi del profilo degli utenti. Permette di fare off loading completo della manutenzione, della sicurezza e della disponibilit\u00e0 della user directory. Tra le operazioni che possono essere esternalizzate ci sono sicuramente la memorizzazione sicura dei dati degli utenti, la verifica dei numeri di telefono e \/o degli indirizzi di posta elettronica, la gestione delle API del sistema di login, del flusso di registrazione, login, logout e la reimpostazione della password.<\/p>\n\n\n\n
Oltre a utilizzare le API specifiche di Amazon Cognito per il flusso di autenticazione degli utenti, il servizio supporta anche il protocollo OAuth 2.0.<\/p>\n\n\n\n
I pool di utenti sono una componente fondamentale di qualsiasi sistema di autenticazione basato su Amazon Cognito e ci torneranno utili per creare il nostro sistema di autenticazione machine-to-machine.<\/p>\n\n\n\n
Identity Pool<\/h2>\n\n\n\n
Nell\u2019esempio che abbiamo preso in considerazione per questo articolo non sar\u00e0 necessario utilizzare gli Identity Pool, ma \u00e8 comunque utile descriverne brevemente il funzionamento.<\/p>\n\n\n\n
Gli Identity Pool (o pool di identit\u00e0) vengono utilizzati da Cognito per mantenere organizzate le identit\u00e0 federate. Un pool di identit\u00e0 associa identit\u00e0 federate da Identity Provider esterni, o anche da una User Pool, a un identificatore univoco. I pool di identit\u00e0 non memorizzano i profili utente, ma solo i loro ID univoci, che vengono generati e gestiti da Cognito. Mediante gli ID \u00e8 possibile assegnare agli utenti corrispondenti un set di credenziali IAM temporanee con privilegi limitati. Gli utenti o le applicazioni client possono utilizzare queste credenziali per accedere alle risorse AWS. Le regole di autorizzazione per ogni utente sono controllate tramite ruoli e policy AWS IAM personalizzabili. \u00c8 anche possibile definire regole per abbinare gli utenti al ruolo desiderato. <\/p>\n\n\n\n
Ora che abbiamo definito tutti i concetti fondamentali possiamo passare alla parte centrale del nostro articolo.<\/p>\n\n\n\n
Flusso di autenticazione \u201cmachine-to-machine\u201d<\/h2>\n\n\n\n
Iniziamo definendo il flusso di autenticazione che configureremo nei passaggi successivi. <\/p>\n<\/div><\/div>\n\n\n