Sicurezza in Blazor con Azure AD B2C

Azure AD B2C è un servizio all’interno del vasto e complesso mondo di Azure che può dimostrarsi estremamente utile e rapido nel proteggere un’applicazione web sviluppata in Blazor.

In questa serie di articoli vedremo come implementare questa integrazione.

Standard di riferimento

Nel mondo della sicurezza dei sistemi web gli standard OAuth 2 (Open Authorization protocol) e OpenID fanno da padroni da diversi anni.

Il principio di funzionamento di OAuth 2 è relativamente semplice:

  1. l’applicazione richiede un permesso di accesso ad un provider di servizi di accesso
  2. l’applicazione riceve un token che garantisce la validità delle credenziali fornite dall’utente
  3. l’applicazione accede alle risorse autorizzate attraverso i permessi forniti dal token

La complessità è garantire gli elevati standard di sicurezza connessi ad ogni singola fase.
Per questo motivo nel tempo sono nate diverse librerie software (SDK) specifiche.
Queste librerie consentono ai programmatori di sviluppare programmi compatibili e certificabili con questi processi.

Per garantire un accesso unificato attraverso un unico provider a più servizi è nato il concetto di federazione.
OpenID nasce proprio da questa esigenza: attraverso un unico provider, scelto dall’utente, federare l’accesso a molteplici servizi.

La strada definita da .net

La gestione degli accessi ad aree riservate di un’applicazione o di un sito web rimane una delle attività maggiormente richieste.
Blazor, attraverso i template integrati in .net, consente la creazione di applicazioni dotate di autenticazione.
Le applicazioni sono comprensive del database utenti e delle relative maschere di accesso, di registrazione di nuovi utenti, di recupero della password e via dicendo.

Il template che offre maggiori garanzie di sicurezza è quello basato sull’integrazione con Identity Server 4 (https://duendesoftware.com/products/identityserver).
Identity Server 4 (ID4 come viene spesso accorciato) risponde ai requisiti di sicurezza degli standard OAuth 2 e OpenID.

Entrare nel dettaglio di questi protocolli di sicurezza non è semplice.
Molte volte viene utilizzato l’ottimo template di base senza particolari accorgimenti.
Il template di base crea un server ID4 ed un’applicazione MVC per offrire le pagine di login, reset, registrazione, ecc.

Complessità, sicurezza e costi

Una delle problematiche che si creano, a mio parere, è la reale capacità di molti sviluppatori di entrare nel merito tecnico dei protocolli di autenticazione ed autorizzazione.
Personalmente dopo anni di lavoro e di studio a volte ho ancora necessità di rivedere alcuni concetti.

La complessità è un aspetto non trascurabile, perché a volte tende a portare un “abbassamento” delle difese a fronte della necessità di raggiungere un obiettivo.

Inoltre da qui a pochi mesi, novembre 2021, ID4 non sarà più un progetto “gratuito”, rimarrà open source, ma licenziato a pagamento (vedasi https://duendesoftware.com/products/identityserver#pricing).
Se l’utilizzo all’interno di un progetto sarà abbastanza esteso, il costo potrà lievitare a decine di migliaia di euro all’anno molto rapidamente.

Quali alternative esistono?
Sicuramente OpenIDDict (https://github.com/openiddict) è una di queste e rientra nella lista dei progetti citati da Microsoft stessa (https://docs.microsoft.com/en-us/aspnet/core/security/authentication/community?view=aspnetcore-5.0).

Tuttavia implementare un progetto di media complessità con OpenIDDict non è semplice e la documentazione è abbastanza scarna.

Le alternative

Un’alternativa rapida, efficace ed enterprise ready la troviamo in casa Microsoft, ossia nel mondo Azure Active Directory.
In particolare il servizio Azure AD B2C (https://docs.microsoft.com/en-us/azure/active-directory-b2c/) offre un’ottima base per sviluppare applicazioni SPA (Single Page Application), ossia le applicazioni web che attualmente chiunque tende a sviluppare.

Azure AD B2C offre protezione completa sia per la parte di front-end così come per la parte di backend, tipicamente realizzata via Rest API.

Cloud ed espandibilità

Grazie ad una politica estremamente permissiva da parte di Microsoft, è possibile utilizzare gratuitamente Azure AD B2C fino a 50 mila accessi mensili (https://azure.microsoft.com/it-it/pricing/details/active-directory/external-identities/#pricing).
Ad oggi, nessun’altra piattaforma enterprise sul mercato offre il medesimo livello di integrazione, sicurezza ed elasticità in ambiente .net.

Con Azure AD B2C è possibile sviluppare applicazioni Blazor Client (WASM), Server o ibride, nonché integrare applicazioni Desktop o Mobile. Tutto rimanendo ad un livello di complessità medio-basso grazie all’ottimo lavoro di integrazione fatto da Microsoft.

La disponibilità di un servizio totalmente cloud è estremamente superiore a quella che potrebbe essere offerta da un servizio on-premise.
Inoltre la scalabilità è garantita nativamente e sfruttabile semplicemente usando il pannello di controllo del portale Azure.

Nei prossimi articoli affronterò le modalità di sviluppo offerte da Azure AD B2C all’interno di un progetto Blazor.

Related Posts

Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.