Azure AD: un caso studio reale

Autenticarsi mediante un’applicazione mobile e invocare un’API custom protetta con Azure AD

Quando si realizzano applicazioni software come quelle mobile, desktop, o Web, l’utilizzo di API è una caratteristica mainstream. Con Azure AD puoi proteggere le tue API in modo tale che, invocandole per esempio da un’applicazione mobile, tu ne possa impedire l’accesso a utenti esterni non autorizzati. Approfondiamo insieme tale caso studio.

Azure Active Directory (Azure AD) è il servizio cloud IAM (Identity and Access Management) di Microsoft, adibito alla gestione delle identità e degli accessi. Tale strumento consente di demandare l’annosa e delicata questione dell’autenticazione e della gestione delle credenziali alla solidità, sicurezza ed esperienza di Microsoft. Potrebbe bastare questo per far comprendere come l’impiego di un servizio del genere sia da considerarsi come una valida scelta qualora una soluzione software, com’è ragionevolmente ipotizzabile oggigiorno, necessiti di implementare funzionalità come quelle di login, autenticazione e gestione delle password.

Azure AD, però, è ben altro che un mero sostituto alla logica e al codice custom che gestisce l’autenticazione all’interno di un programma software. Oltre a queste funzionalità “base”, infatti, Azure AD offre molte altre possibilità, come quella di proteggere l’accesso alle proprie API. Questo sta a significare che l’uso di tali interfacce può essere controllato a piacimento, impedendo che utenti non autorizzati possano invocarle. Un esempio classico può essere quello di un’applicazione mobile, come una Android o iOS che, in seguito all’autenticazione da parte di un utente presso la piattaforma di identità Microsoft, riesce ad ottenere il consenso a invocare un’API custom “per conto dell’utente stesso” mediante l’acquisizione di un token. Azure AD rende semplice implementare l’infrastruttura necessaria per stabilire il legame tra le varie entità in gioco (è doveroso ricordare che l’autenticazione per invocare un’API non dev’essere obbligatoriamente effettuata presso Microsoft: l’identità dell’utente può essere confermata anche da servizi come Google, Facebook e Twitter).

Azure Function esposta come API

Esempio di configurazione dell’autenticazione di una Azure Function esposta come API

Alla base di Azure AD vi sono le cosiddette app registration, “entità” che svolgono un vero e proprio ruolo di “rappresentanza”: esse simbolizzano infatti i protagonisti della scena nel panorama client-server che si desidera implementare. Le app registration permettono, quindi, di disegnare l’ecosistema di entità  e permessi che insieme consentono, sfruttando gli opportuni parametri forniti dal portale Azure, di concretizzarlo in un caso d’uso reale. Nello scenario considerato si andrebbero a creare due app registration:

  1. Una per rappresentare l’applicazione mobile che si occupa di invocare l’API, processo che può però verificarsi solo dopo che un utente esegue il login e si autentica come utente Microsoft esistente e “certificato”.
  2. Una per rappresentare l’API stessa che dev’essere invocata.

Il linea generale, la creazione dell’infrastruttura necessaria per implementare questo scenario di snoda lungo le seguenti fasi:

  1. Creazione delle due app registration in gioco.
  2. Attivazione dell’autenticazione per l’accesso all’API custom, specificando l’app registration relativa all’API (un esempio è fornito dall’immagine precedente).
  3. Esposizione dell’API mediante la relativa app registration, con la creazione di ciò che viene chiamato “scope”. Gli scope rappresentano “punti d’ingresso” verso le API, tramite cui bisogna passare per raggiungerle.
  4. Abilitazione dell’app registration relativa all’applicazione mobile affinché questa possa accedere allo scope definito precedentemente. In questo modo, l’applicazione mobile è dotata di un punto d’ingresso per accedere all’API.

Il processo di configurazione delle app registration e degli scope è immediato e può avvenire comodamente dal portale Azure.

app registration creata nel portale Azure

Esempio di un’app registration creata nel portale Azure

Al termine di questo processo di configurazione, Azure AD fornisce tutti i parametri che devono essere inseriti nel codice per far sì che sia possibile referenziare le diverse app registration che sono state precedentemente create. In questo caso, la nostra applicazione mobile andrà ad utilizzare la libreria MSAL (Microsoft Authentication Library) fornita ufficialmente da Microsoft, assieme ai parametri forniti dal portale, per dimostrare di essere la “concretizzazione” di quell’app registration astratta creata precedentemente per l’applicazione stessa. L’apposita documentazione relativa alla Microsoft Identity Platform fornisce tutte le spiegazioni e i dettagli necessari.

Sfruttando la MSAL, si riesce ad implementare lo scenario lato client di cui abbiamo parlato, cosa che permette di realizzare la seguente situazione esemplificativa:

  1. L’utente Mario Rossi installa e apre l’applicazione mobile sul suo device Android o iOS.
  2. All’avvio, egli è accolto da una schermata custom provvista di un pulsante di login, che rappresenta il punto di partenza per avviare il processo di autenticazione con Azure AD e Microsoft.
  3. La pressione sul tasto esegue il codice necessario per Azure AD utilizzando i parametri forniti appositamente dal servizio cloud e integrati manualmente nel codice.
  4. L’utente Mario Rossi viene indirizzato a una form di login, non implementata dagli sviluppatori dell’applicazione, bensì fornita da Microsot. Si tratta di un vero e proprio browser che viene aperto automaticamente sopra l’applicazione e che consente all’utente di autenticarsi con Microsoft utilizzando le sue credenziali (sia aziendali che personali, in base al livello di multi-tenancy che è stato previsto per il contesto in esame).
  5. In seguito all’autenticazione, l’applicazione ottiene un token che le consente di invocare l’API custom protetta per conto dell’utente che si è loggato.

In conclusione di questo articolo, ricordiamo che la sezione relativa ad Azure AD fornita all’interno del portale online di Azure offre una suite completa di settaggi e impostazioni per utilizzare questo servizio secondo le proprie esigenze:

  • Permette di configurare le app registration in maniera semplice ed immediata, mediante pochi click del mouse.
  • Permette di definire in maniera altrettanto semplice quali scope devono esposti e da quali API.
  • Permette di specificare il livello di multi-tenancy, ossia a quali tenant l’utente che si autentica può appartenere per far sì che l’applicazione possa ottenere il token per invocare l’API custom.
  • Permette di sfruttare la MFA (Multi-Factor Authentication) per godere di un notevole miglioramento in termini di sicurezza.
  • Permette di integrare le applicazioni in modo tale da sfruttare l’SSO (Single Sign-On), in modo tale da non dover eseguire il login più volte.

Microsoft Azure è una piattaforma di Cloud Computing accessibile tramite un portale online che consente di accedere e gestire i servizi e le risorse cloud forniti da Microsoft

Azure Developer presso NEBULA

 

0 commenti

Lascia un Commento

Vuoi partecipare alla discussione?
Sentitevi liberi di contribuire!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *