Azure AD B2C - Application Integration for Gas Customer
[Versione italiana di seguito]
Disclaimer: Many of our customers have confidentiality agreements safeguarding their brand names from commercial purposes. Hence, you may encounter references such as “Client Name Confidential”, or the customer’s industry instead of the customer’s brand name.
The Client
[Client Name Confidential] with its subsidiary [Client Name Confidential] operate in the field of gas distribution in more than 2 thousand municipalities located throughout Italy.
The acquisition and integration over the course of its history of numerous companies in the industry, all characterized by a high level of technical know-how, has enabled the achievement of a high level of expertise in the design, construction and operation of gas distribution networks.
Requirements and Projects
[Client Name Confidential] was faced with a critical need: how to effectively manage customer access to its B2C applications while ensuring scalability and global availability. Instead of opting to create a custom identity service that was expensive and difficult to maintain (including security), the company chose a smarter solution.
The choice of Microsoft Azure Active Directory B2C proved to be strategic. This platform enabled single-sign-on delivery across multiple technical initiatives, leveraging Azure's credential security. Authentication management and maintenance is just a business cost and a hassle for the legal side that cannot be done without, however. With the Azure AD B2C service, the cost can be zeroed out; in addition to erasing the costs associated with maintaining and managing the authentication infrastructure, it is a zero-cost service for up to 50,000 logins per month.
The customer runs a wide range of applications, some intended for employees, others for partners and customers. For some applications, they wanted to grant access to employees and partner companies, and for others they wanted to allow customers to create their own accounts.
[Client Name Confidential] worked closely with SORINT.lab, as a specialized partner, to implement integration with Azure Active Directory B2C. SORINT.lab's task was to design and develop the platform, including the tenant structure, and integrate it with the company's web and nonweb applications.
This strategic move moved user authentication from an internal application database to Azure Active Directory and simplified authentication logic. By adopting a modern, recognized, standards-based platform that was also flexible enough to integrate with existing systems, [Client Name Confidential] experienced a transparent transition that paved the way for many benefits.
What is Azure Active Directory and Azure AD B2C?
Azure Active Directory (Azure AD for short) is an identity provider service in the cloud, or Identity as a Service (IdaaS), provided by Microsoft. Its main purpose is to provide authentication and authorization for applications in the cloud. Developers can create applications and secure them with Azure AD. In this case, an application can be developed for a single organization (single-tenant) or as a general service (multi-tenant) that can be accessed by any company using Azure AD.
Azure Active Directory B2C (Business-to-Consumer) is a separate service from Azure AD. Built on the same technology, it is designed for a different scenario. The main difference is that it is not intended for business users. Its function is to allow anyone to register as a user of the service with their e-mail address or with a social media provider such as Facebook, Google or LinkedIn. The purpose of Azure AD B2C is to enable companies to create a cloud identity directory for their customers.
Many companies have already set up an Azure AD tenant, where they typically synchronize all internal user accounts from an Active Directory. With the Federation feature, a trusted relationship can be established between a B2C Azure AD tenant and an Azure AD tenant, thus allowing internal users to log in using their existing accounts from Azure Active Directory.
Technology in Details
To understand the full potential of Azure Active Directory B2C, it is essential to do a little digging within the solution.
Azure AD B2C acts as an authentication connector between applications and authentication sources (IdP - Identity Provider).
In Azure Active Directory B2C (Azure AD B2C) a tenant represents the organization and is a directory of users. Each Azure AD B2C tenant is distinct and separate from other Azure AD B2C tenants.
The main resources used in an Azure AD B2C tenant are:
- Directory: is the location where user credentials, profile data, and application records are stored *App registrations: register Web, mobile, and native applications with Azure AD B2C to enable identity management. An app registration is a logical representation of the actual application.
- User flows and custom criteria: create identity experiences for applications with predefined user flows and fully configurable custom criteria
- Access options: there are different enrollment and access options for application users
Azure AD B2C offers several ways in which a user can be authenticated. Users can log in to a local account, using username and password, telephone verification (also known as passwordless authentication). Users can be allowed to log in with credentials from social networking and enterprise identity providers, and also may or may not receive an MFA authentication request based on configuration decisions made by an administrator.
Risk detection capabilities, including risky users and risky access, are automatically detected and displayed in the Azure AD B2C tenant. Conditional access policies can be created that use these risk detections to determine remediation actions and enforce the organization's policies.
Azure AD B2C communicates with the application via standard protocols OAuth2, SAML, OIDC i.e., market standards, interposing itself via a browser during authentication then in a totally transparent way to the user who is offered a customizable login page.
You can define the business logic that users follow to gain access to the application. You can determine the sequence of steps that users follow when they log in, sign up, change a profile, or reset a password. After completing the sequence, the user acquires a token and gains access to the application.
Displayed pages can be customized to blend seamlessly with the appearance of the brand. You gain almost complete control over the HTML and CSS content presented to users as they proceed along the application's identity paths.
When a user wants to access the application, the application initiates an authorization request to an endpoint provided by a user flow or custom endpoint. The user flow or custom policy defines and controls the user experience. At the end of a user flow, such as enrollment or login flow, Azure AD B2C generates a token, then redirects the user to the application. This token is specific to Azure AD B2C and should not be confused with the token issued by third-party identity providers when using social accounts.
Services Performed
After the initial meeting with the client, SORINT.lab conducted a detailed requirements gathering session.
The project then included a few main phases:
- Preparing an Azure AD B2C Tenant.
- Provision Azure AD B2C and complete custom customer branding.
- Configure Azure AD B2C using identity access management (IAM).
- Configure user flows in Azure AD B2C for user login and registration, password reset, multi factor authentication, customize flow for end user.
- After a new user logs in and registers, check flows from Azure AD B2C to the application.
- Create a simple test application to simulate this process, using SAML protocol.
- Implementation on pre-prod and production environment.s
During the project implementation, we faced the difficulty of configuring authentication and registration flows using SAML protocol, as Azure AD B2C guided user flows were not available to meet the specific requirements of the application.
To achieve this customization, we had to resort to configuring XML code and creating custom policies, a process that allowed us to completely adapt authentication and registration behavior according to our client's needs.
This approach required the preparation of an entire framework called the 'Identity Experience Framework' to serve as the basis for the custom rules.
Complexity and Challenges
One of the biggest challenges associated with creating applications is security. Identity and access management is often a significant problem and cost for enterprise applications.
Managing end-user credentials, even with GDPR in mind, is not simple, credentials must be stored in secure locations, systems "backupplied," their management tracked, users have the right to be able to change passwords, users forget their credentials, and then time is spent on management and maintenance, which is difficult to bill. SORINT.lab developed a proof of concept to demonstrate the integration of the client's platform with Azure AD B2C by addressing the following technical and implementation challenges:
- Demonstrate the replacement of database-driven user authentication with a ready-to-use identity management platform
- Password creation, authentication and change flow management with multi factor authentication
- Integration with Azure Active Directory B2C via SAML protocol.
- Integration with Azure Active Directory B2C via SAML protocol.
Obtained Benefits
With the adoption of Microsoft Azure Active Directory B2C, [Client Name Confidential] can bring faster and more dynamic innovation. Now the company can introduce new technology solutions to the market with greater speed, thanks to the simple integration of identity and authentication into its B2C platform.
There has been a shift from a legacy authentication model to a modern identity management solution that provides unified access.
Security has become a key priority of this project. To prevent password discovery attempts through brute-force attacks, Azure AD B2C uses a sophisticated strategy to block accounts based on the IP address of the request, the passwords entered, and several other factors. The duration of the lockout is automatically increased based on risk and the number of attempts.
Sessions are modeled as encrypted data, with the decryption key known only to the Azure AD B2C security token service. An advanced encryption algorithm, AES-192, is used. All communication paths are protected with TLS at the confidentiality and integrity level. The security token service uses an extended validation certificate (EV) for TLS. In general, the security token service mitigates cross-site scripting (XSS) attacks by not rendering untrusted input.
Azure AD B2C generates audit logs containing activity information about administrative access, tokens issued, and resources. You can use audit logs to understand platform activity and diagnose problems.
Sircle Microsoft and Azure defined a new use case for deploying Microsoft services in hybrid cloud and gained new skills that will be valuable for future projects, guiding the customer through a major technology upgrade step.
References
- https://learn.microsoft.com/en-us/azure/active-directory-b2c/technical-overview
- https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/active-directory-b2c/overview.md
- https://azure.microsoft.com/en-us/pricing/details/active-directory-external-identities/
- https://learn.microsoft.com/en-us/azure/active-directory-b2c/threat-management
- https://learn.microsoft.com/en-us/azure/active-directory-b2c/security-architecture
- https://learn.microsoft.com/en-us/azure/active-directory-b2c/integrate-with-app-code-samples
Avviso: Molti dei nostri clienti hanno stipulato accordi di riservatezza che tutelano i loro marchi da scopi commerciali. Pertanto potresti incontrare diciture come “Nome Cliente Riservato” oppure vedrai riportato il settore del cliente invece del suo nome.
Il Cliente
Opera nel settore della distribuzione del gas in oltre 2 mila Comuni presenti sull’intero territorio nazionale.
L’acquisizione e l’integrazione nel corso della propria storia di numerose società del settore, tutte caratterizzate da un elevato know-how tecnico, ha permesso il conseguimento di un alto livello di competenza nella progettazione, costruzione e gestione delle reti di distribuzione del gas.
Progetto ed esigenze
[Nome Cliente Riservato] si è trovata di fronte a una necessità critica: come gestire efficacemente l'accesso dei clienti alle sue applicazioni B2C, garantendo allo stesso tempo scalabilità e disponibilità globale. Anzichè optare per la creazione di un servizio di identità personalizzato, costoso e difficile da mantenere (anche in termini di sicurezza) l'azienda ha scelto una soluzione più intelligente.
La scelta di Microsoft Azure Active Directory B2C si è rivelata strategica. Questa piattaforma ha permesso di fornire il single-sign-on attraverso molteplici iniziative tecniche, sfruttando la sicurezza delle credenziali di Azure.
La gestione e la manutenzione dell’autenticazione è solo un costo aziendale e un problema per la parte legale di cui però non si può fare a meno. Con il servizio Azure AD B2C il costo può essere azzerato, oltre a cancellare i costi legati alla manutenzione e gestione dell’infrastruttura di autenticazione è un servizio a costo zero fino a 50.000 accessi al mese.
Il cliente gestisce una vasta gamma di applicazioni, alcune destinate ai dipendenti, altre ai partner e ai clienti. Per alcune applicazioni, si voleva garantire l'accesso ai dipendenti e alle aziende partner, per altre si voleva consentire ai clienti di creare i propri account.
[Nome Cliente Riservato] ha collaborato strettamente con SORINT.lab, come partner specializzato, per realizzare l'integrazione con Azure Active Directory B2C. Il compito di SORINT.lab è stato quello di progettare e sviluppare la piattaforma, inclusa la struttura di tenant, e di integrarla con le applicazioni web e non dell'azienda.
Questa mossa strategica ha permesso di spostare l'autenticazione degli utenti da un database interno all'applicazione ad Azure Active Directory e semplificando la logica di autenticazione.
Adottando una piattaforma moderna, riconosciuta e basata su standard, ma anche abbastanza flessibile da integrarsi con i sistemi esistenti, [Nome Cliente Riservato] ha vissuto una transizione trasparente che ha aperto la strada a molti vantaggi.
Cosa sono Azure Active Directory e Azure AD B2C?
Azure Active Directory (in breve Azure AD) è un servizio di identity provider nel cloud, o Identity as a Service (IdaaS), fornito da Microsoft. Il suo scopo principale è fornire l'autenticazione e l'autorizzazione per le applicazioni nel cloud. Gli sviluppatori possono creare applicazioni e proteggerle con Azure AD. In questo caso, un'applicazione può essere sviluppata per una singola organizzazione (single-tenant) o come servizio generale (multi-tenant) accessibile da qualsiasi azienda che utilizzi Azure AD.
Azure Active Directory B2C (Business-to-Consumer) è un servizio separato da Azure AD. Costruito sulla stessa tecnologia, è progettato per uno scenario diverso. La differenza principale è che non è destinato agli utenti aziendali. La sua funzione è quella di consentire a chiunque di registrarsi come utente del servizio con il proprio indirizzo e-mail o con un provider di social media come Facebook, Google o LinkedIn. Lo scopo di Azure AD B2C è quello di consentire alle aziende di creare una directory di identità cloud per i propri clienti.
Molte aziende hanno già configurato un tenant di Azure AD, dove sincronizzano solitamente tutti gli account degli utenti interni di un Active Directory. Con la funzione di Federazione è possibile instaurare una relazione di fiducia tra un tenant Azure AD B2C e un tenant Azure AD, consentendo quindi agli utenti interni di accedere utilizzando i loro account esistenti da Azure Active Directory.
Tecnologia nel dettaglio
Per comprendere appieno le potenzialità di Azure Active Directory B2C, è essenziale fare un piccolo approfondimento all'interno della soluzione.
Azure AD B2C fa da connettore di autenticazione tra le applicazioni e le fonti di autenticazione (IdP - Identity Provider).
In Azure Active Directory B2C (Azure AD B2C) un tenant rappresenta l'organizzazione ed è una directory di utenti. Ogni tenant di Azure AD B2C è distinto e separato dagli altri tenant di Azure AD B2C.
Le risorse principali usate in un tenant di Azure AD B2C sono:
- Directory: è la posizione in cui vengono archiviate le credenziali degli utenti, i dati del profilo e le registrazioni delle applicazioni
- Registrazioni delle applicazioni: registrare le applicazioni Web, per dispositivi mobili e native con Azure AD B2C per abilitare la gestione delle identità. Un'app registration è una rappresentazione logica dell'applicazione reale.
- Flussi utente e criteri personalizzati: creare esperienze di identità per le applicazioni con flussi utente predefiniti e criteri personalizzati completamente configurabili
- Opzioni di accesso: ci sono diverse opzioni di iscrizione e accesso per gli utenti delle applicazioni
Azure AD B2C offre diversi modi in cui è possibile autenticare un utente. Gli utenti possono accedere a un account locale, usando nome utente e password, verifica telefonica (nota anche come autenticazione senza password). È possibile consentire agli utenti di accedere con le credenziali dei provider di identità di social networking ed enterprise, inoltre possono o meno ricevere una richiesta di autenticazione MFA in base alle decisioni di configurazione prese da un amministratore.
Funzionalità di rilevamento dei rischi, inclusi gli utenti rischiosi e gli accessi rischiosi, vengono rilevati e visualizzati automaticamente nel tenant di Azure AD B2C. È possibile creare criteri di accesso condizionale che usano questi rilevamenti di rischio per determinare le azioni di correzione e applicare i criteri dell'organizzazione.
Azure AD B2C comunica con l’applicazione tramite protocolli standard OAuth2, SAML, OIDC cioè gli standard di mercato, interponendosi tramite browser in fase di autenticazione quindi in modo totalmente trasparente all’utilizzatore a cui viene proposta una pagina di accesso personalizzabile.
E' possibile definire la logica di business che gli utenti seguono per ottenere l'accesso all'applicazione. Si può determinare la sequenza di passaggi che gli utenti seguono quando accedono, eseguono l'iscrizione, modificano un profilo o reimpostano una password. Dopo aver completato la sequenza, l'utente acquisisce un token e ottiene l'accesso all'applicazione.
Le pagine visualizzate si possono personalizzare per far si che si fondano perfettamente con l'aspetto del marchio. Si ottiene il controllo quasi completo dei contenuti HTML e CSS presentati agli utenti quando procedono lungo i percorsi di identità dell'applicazione.
Quando un utente vuole accedere all'applicazione, l'applicazione avvia una richiesta di autorizzazione a un endpoint fornito da un flusso utente o un endpoint personalizzato. Il flusso utente o il criterio personalizzato definisce e controlla l'esperienza dell'utente. Al termine di un flusso utente, ad esempio l'iscrizione o il flusso di accesso, Azure AD B2C genera un token, quindi reindirizza l'utente all'applicazione. Questo token è specifico di Azure AD B2C e non deve essere confuso con il token rilasciato dai provider di identità di terze parti quando si usano account social.
Servizio svolto
Dopo l'incontro iniziale con il cliente, SORINT.lab ha condotto una sessione dettagliata di raccolta dei requisiti.
Il progetto ha previsto poi alcune fasi principali:
- Preparazione di un tenant Azure AD B2C
- Provisionare Azure AD B2C e completare il branding personalizzato del cliente
- Configurare Azure AD B2C utilizzando IAM (Identity Access Management)
- Configurare i flussi utente in Azure AD B2C per l'accesso e la registrazione degli utenti, la reimpostazione della password, la multi factor authentication, personalizzare il flusso per l'utente finale
- Dopo l'accesso e la registrazione di un nuovo utente, controllare i flussi da Azure AD B2C all'applicazione
- Creare una semplice applicazione di test per simulare questo processo, utilizzando protocollo SAML
- Implementazione sugli ambienti di pre-prod e produzione
Nel corso dell'implementazione del progetto, abbiamo affrontato la difficoltà di configurare i flussi di autenticazione e registrazione utilizzando il protocollo SAML, dato che gli user flow guidati di Azure AD B2C non erano disponibili per soddisfare i requisiti specifici dell'applicazione.
Per realizzare questa personalizzazione, abbiamo dovuto ricorrere alla configurazione di codice XML e alla creazione di custom policy, un processo che ci ha permesso di adattare completamente il comportamento di autenticazione e registrazione secondo le esigenze del nostro cliente.
Questo approccio ha richiesto la predisposizione di un'intera struttura denominata 'Identity Experience Framework' che facesse da base per le regole custom.
Complessità e sfide
Una delle maggiori sfide legate alla creazione di applicazioni è la sicurezza. Spesso la gestione delle identità e degli accessi è un problema e un costo significativo per le applicazioni aziendali.
Gestire le credenziali degli utenti finali, anche in ottica GDPR, non è semplice, le credenziali vanno conservate in luoghi sicuri, i sistemi “backuppati”, tracciata la loro gestione, gli utenti hanno il diritto di poter cambiare password, gli utenti dimenticano le loro credenziali e quindi si spende tempo per gestione e manutenzione, difficilmente fatturabile.
SORINT.lab ha sviluppato un proof of concept per dimostrare l'integrazione della piattaforma del cliente con Azure AD B2C affrontando le seguenti sfide tecniche e di implementazione:
- Dimostrare la sostituzione di un'autenticazione degli utenti orientata al database con una piattaforma di gestione delle identità pronta all'uso
- Gestione del flusso di creazione, autenticazione e change di password con multi factor authentication
- Integrazione con Azure Active Directory B2C tramite protocollo SAML
- Strategia e notifica ai clienti della nuova modalità di accesso e redazione di un manuale da consegnare
Benefici ottenuti
Con l'adozione di Microsoft Azure Active Directory B2C, [Client Name Confidential] può portare un'innovazione più rapida e dinamica. Ora l'azienda può introdurre nuove soluzioni tecnologiche sul mercato con maggiore celerità, grazie alla semplice integrazione dell'identità e dell'autenticazione nella sua piattaforma B2C.
Si è passati da un modello di autenticazione legacy a una soluzione di gestione delle identità moderna che offre un accesso unificato.
La sicurezza è diventata una priorità fondamentale di questo progetto. Per impedire i tentativi di individuazione delle password tramite attacchi di forza bruta, Azure AD B2C usa una strategia sofisticata per bloccare gli account in base all'indirizzo IP della richiesta, alle password immesse e a diversi altri fattori. La durata del blocco viene aumentata automaticamente in base al rischio e al numero di tentativi.
Le sessioni sono modellate come dati crittografati, con la chiave di decrittografia nota solo al servizio token di sicurezza di Azure AD B2C. Viene usato un algoritmo di crittografia avanzata, AES-192. Tutti i percorsi di comunicazione sono protetti con TLS a livello di riservatezza e integrità. Il servizio token di sicurezza usa un certificato di convalida estesa (EV) per TLS. In generale, il servizio token di sicurezza attenua gli attacchi di tipo cross-site scripting (XSS) non eseguendo il rendering di input non attendibile.
Azure AD B2C genera log di controllo contenenti informazioni sulle attività relative ad accesso amministrativo, token rilasciati e risorse. È possibile usare i log di controllo per comprendere l'attività della piattaforma e diagnosticare i problemi.
Il Sircle Microsoft e Azure ha definito un nuovo use case di implementazione di servizi Microsoft in hybrid cloud e acquisito nuove competenze che saranno preziose per progetti futuri, guidando il cliente attraverso un importante step di upgrade tecnologico.
Riferimenti
- https://learn.microsoft.com/en-us/azure/active-directory-b2c/technical-overview
- https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/active-directory-b2c/overview.md
- https://azure.microsoft.com/en-us/pricing/details/active-directory-external-identities/
- https://learn.microsoft.com/en-us/azure/active-directory-b2c/threat-management
- https://learn.microsoft.com/en-us/azure/active-directory-b2c/security-architecture
- https://learn.microsoft.com/en-us/azure/active-directory-b2c/integrate-with-app-code-samples