Utilizzare Azure AD per autenticarsi ad una Azure Web App

È possibile utilizzare Azure Active Directory (Azure AD) come provider di autenticazione per una Azure Web App oppure per una Azure Function. In questo modo prima di potersi connettere alla nostra applicazione web l’autenticazione verrà intercettata da Azure AD e sarà possibile sfruttare tutte le tecniche di anti DDOS offerte da Microsoft. Tutto questo senza non dover scrivere nemmeno una riga di codice, non modificare la nostra applicazione web (che potrebbe essere obsoleta) e consentendo anche a utenti al di fuori della nostra organizzazione di poter accedere alla nostra applicazione web.

Le Azure Web App forniscono supporto integrato per l’autenticazione e l’autorizzazione ed è quindi possibile consentire l’accesso degli utenti e l’accesso ai dati senza scrivere codice, o con una minima quantità di codice, nell’app Web, nell’API RESTful o nel back-end per dispositivi mobili. La funzionalità di autenticazione/autorizzazione viene anche chiamata “Easy auth”.

Azure Web App usa l’identità federata, in cui un provider di identità di terze parti gestisce le identità utente e il flusso di autenticazione. Per impostazione predefinita sono disponibili cinque provider di identità:

PROVIDER DI IDENTITÀ
Provider Endpoint di accesso
Azure Active Directory /.auth/login/aad
Account Microsoft /.auth/login/microsoftaccount
Facebook /.auth/login/facebook
Google /.auth/login/google
Twitter /.auth/login/twitter
Qualsiasi provider OpenID Connect (anteprima) /.auth/login/<providerName>

Quando si abilitano l’autenticazione e l’autorizzazione con uno di questi provider, il relativo endpoint di accesso è disponibile per l’autenticazione utente e per la convalida dei token di autenticazione del provider.

In queata guida mostrerò come configurare Azure Active Directory.

Configurare Azure Web App per utilizzare Azure AD

Collegatevi al portale di Azure e selezionate la vostra Azure Web App. Cliccate su Authentication / Authorization e cliccate su On. Scegliete il nodo Azure Active Directory per cominciare la configurazione.

Figura 1: Abilitazione della funzionalità di Authentication / Authorization in Azure Web App

Scegliete la modalità Express e create una nuova app in Azure AD. Potete lasciare il nome suggerito oppure potete sceglierne uno a vostro piacimento, a patto che sia univoco. Fate clic su OK per confermare.

Figura 2: Creazione della Azure AD Application

Per limitare l’accesso solo agli utenti autenticati da Azure AD, impostate Azione da eseguire quando la richiesta non è autenticata su Log in with Azure Active Directory. Quando si imposta questa funzionalità, l’Azure Web App richiede che tutte le richieste vengano autenticate e reindirizza tutte le richieste non autenticate a Azure AD per l’autenticazione.

Figura 3: Obbligo del login per gli utenti non autenticati utilizzando Azure AD

NOTA: Per impostazione predefinita, l’Azure Web App fornisce l’autenticazione, ma non limita l’accesso al contenuto del sito e alle API. È necessario autorizzare gli utenti in Azure Active Directory.

Autorizzazione degli accessi all’Azure Web App

Per poter autorizzare gli accessi alla Azure Web App solo a specifici utenti, sarà necessario configurare l’applicazione e indicare quali utenti del vostro tenant potranno accedere alla web app. Nel portale di Azure selezionate il vostro tenant di Azure AD e cliccate sul nodo Enterprise Applications. Individuate l’applicazione che è stata creata ed associata alla Azure Web App e cliccate per configurarla, come mostrato nella figura sotto:

Figura 4: Selezione della Azure Ad Enterprise Application associata alla Azure Web App

Nella schermata di Overview avete la possibilità di poter far acceder utenti o gruppi alla vostra applicazione. Cliccate su Assign Users and Groups e scegliete a quali utenti concedere l’accesso, come mostrato nelle figure sotto:

Figura 5: Assegnazione di utenti e gruppi a cui concedere l’accesso all’applicazione

Figura 6: Aggiunta di un utente all’applicazione

Figura 7: Scelta dell’utnete a cui concedere l’accesso all’applicazione

Confermate cliccando sul pulsante Assign. Da questo momento in poi soltanto gli utenti e i gruppi che avete selezionato potranno accedere alla Azure Web App.

È possibile far accedere anche utenti provenienti da tenant diversi a patto che prima li abbiate aggiunti come utenti guest al vostro Azure AD tenant. Aggiungere utenti guest alla directory nel portale di Azure

Figura 8: Utenti a cui è stato concesso di accedere alla Azure Web App

Provando a navigare per raggiungere l’Azure Web App, nel mio caso utilizzando l’url https://nicferr.nicolaferrini.it, si verrà reindirizzati alla pagina di login di Azure Active Directory.

Figura 9: Pagina di login di Azure AD

Una volta che avrete effettuato il login ad Azure AD, con il massimo della sicurezza che è consentito da questo tipo di autenticazione, vi verrà chiesto di concedere l’accesso al login e alla lettura del vostro profilo.

Figura 10: Richiesta di accesso al profilo dell’utente

Se siete autorizzati potrete visualizzare la vostra Azure Web App, come mostrato in figura:

Figura 11: Accesso alla Azure Web App consentito

Se invece non siete autorizzati riceverete un messaggio di errore come quello mostrato nella figura sotto:

Figura 12: Accesso alla Azure Web App non consentito

È possibile effettuare l’accesso a tutte le Enterprise applications di Azure AD semplicemente visitando la pagina https://myapplications.microsoft.com/. Dopo aver effettuato l’autenticazione, l’utente sarà in grado di visualizzare le applicazioni a cui ha diritto di accedere e semplicemente cliccando sul pulsante on il nome dellìapplicazione verrà reindirizzato alla pagina dell’applicazione web.

Figura 13: Schermata delle Enterprise Application in Azure AD

In qualsiasi momento l’utente potrà controllare i permessi che sono stati dati all’applicazione e potrà eventualmente rimuovere alcuni permessi relativi alla lettura delle informazioni personali prelevate dal suo profilo di Azure AD.

Figura 14: Gestione della Enterorise Application in Azure AD

Conclusioni

Poter filtrare gli accessi alle nostre applicazioni web utilizzando un account aziendale di Azure AD è decisamente semplificato dalla modalità di autorizzazione delle Azure Web App o delle Azure Functions. Senza scrivere una riga di codice abbiamo la possibilità di integrare molto facilmente la nostra applicazione e possiamo sfruttare tutti i vantaggi offerti dalla Azure Multi-Factor Authentication o dalla Passwordless Authentication, di cui ho già abbondantemente parlato in altre guide.