Esercitazione per configurare Azure Active Directory B2C con Strata
Questa esercitazione descrive come integrare Azure Active Directory B2C (Azure AD B2C) con Strata Maverics Identity Orchestrator, che consente di proteggere le applicazioni locali. Si connette ai sistemi di gestione delle identità, esegue la migrazione di utenti e credenziali, sincronizza criteri e configurazioni e astrae l'autenticazione e la gestione delle sessioni. Usare Strata per passare dalla versione legacy ad Azure AD B2C, senza riscrivere le applicazioni.
La soluzione offre i vantaggi seguenti:
-
Accesso Single Sign-On (SSO) del cliente alle app ibride locali : Azure AD B2C supporta l'accesso SSO del cliente con Maverics Identity Orchestrator
- Gli utenti accedono con account ospitati in Azure AD B2C o provider di identità (IdP)
- Maverics dimostra l'accesso Single Sign-On alle app storicamente protette da sistemi di identità legacy come Symantec SiteMinder
- Estendere l'accesso Single Sign-On alle app: usare Azure AD B2C per gestire l'accesso utente e abilitare l'accesso SSO con i connettori SamL (Identity Orchestrator Security Assertion Markup Language) di Maverics o OpenID Connect (OIDC)
- Configurazione semplice : connettere i connettori SAML o OIDC di Maverics Identity Orchestrator ad Azure AD B2C
Prerequisiti
Per iniziare, è necessario:
Una sottoscrizione di Azure
- Se non è disponibile, è possibile ottenere un account gratuito di Azure
- Un tenant di Azure AD B2C collegato alla sottoscrizione di Azure
- Istanza di Azure Key Vault per archiviare i segreti usati da Maverics Identity Orchestrator. Connettersi ad Azure AD B2C o ad altri provider di attributi, ad esempio una directory LDAP (Lightweight Directory Access Protocol) o un database.
- Istanza di Maverics Identity Orchestrator in esecuzione in una macchina virtuale di Azure o in un server locale. Per ottenere software e documentazione, passare a strata.io Contattare Strata Identity.
- Un'applicazione locale per la transizione ad Azure AD B2C
Descrizione dello scenario
L'integrazione di Maverics Identity Orchestrator include i componenti seguenti:
-
Azure AD B2C : server di autorizzazione che verifica le credenziali utente
- Gli utenti autenticati accedono alle app locali usando un account locale nella directory di Azure AD B2C
- Provider di identità social o aziendale esterno (IdP): provider OIDC, Facebook, Google o GitHub
- Strata Maverics Identity Orchestrator: servizio di accesso utente che passa l'identità alle app tramite intestazioni HTTP
Il diagramma dell'architettura seguente illustra l'implementazione.
- L'utente richiede l'accesso all'applicazione ospitata in locale. Maverics Identity Orchestrator esegue il proxy della richiesta all'applicazione.
- Orchestrator controlla lo stato di autenticazione dell'utente. Se non è presente alcun token di sessione o il token non è valido, l'utente passa ad Azure AD B2C per l'autenticazione
- Azure AD B2C invia la richiesta di autenticazione al provider di identità di social networking configurato.
- Il provider di identità sfida l'utente per le credenziali. Potrebbe essere necessaria l'autenticazione a più fattori (MFA).
- Il provider di identità invia la risposta di autenticazione ad Azure AD B2C. L'utente può creare un account locale nella directory di Azure AD B2C.
- Azure AD B2C invia la richiesta dell'utente all'endpoint specificato durante la registrazione dell'app Orchestrator nel tenant di Azure AD B2C.
- Orchestrator valuta i criteri di accesso e i valori degli attributi per le intestazioni HTTP inoltrate all'app. Orchestrator potrebbe chiamare altri provider di attributi per recuperare informazioni per impostare i valori di intestazione. Orchestrator invia la richiesta all'app.
- L'utente viene autenticato e ha accesso all'app.
Maverics Identity Orchestrator
Per ottenere software e documentazione, passare a strata.io Contattare Strata Identity. Determinare i prerequisiti di Orchestrator. Installare e configurare.
Configurare il tenant di Azure AD B2C
Durante le istruzioni seguenti, documentare:
- Nome e identificatore del tenant
- ID client
- Segreto client
- Attestazioni configurate
- URI di reindirizzamento
- Registrare un'applicazione Web in Azure Active Directory B2C nel tenant di Azure AD B2C.
- Concedere a Microsoft MS API Graph autorizzazioni per le applicazioni. Usare le autorizzazioni:
offline_access
,openid
. - Aggiungere un URI di reindirizzamento corrispondente al
oauthRedirectURL
parametro della configurazione del connettore Azure AD B2C di Orchestrator,https://example.com/oidc-endpoint
ad esempio . - Creare flussi utente e criteri personalizzati in Azure Active Directory B2C.
- Aggiungere un provider di identità al tenant di Azure Active Directory B2C. Accedere all'utente con un account locale, un social o un'azienda.
- Definire gli attributi da raccogliere durante l'iscrizione.
- Specificare gli attributi da restituire all'applicazione con l'istanza di Orchestrator.
Nota
Orchestrator usa gli attributi dalle attestazioni restituite da Azure AD B2C e può recuperare attributi da sistemi di identità connessi, ad esempio directory e database LDAP. Questi attributi si trovano nelle intestazioni HTTP e inviati all'applicazione locale upstream.
Configurare Maverics Identity Orchestrator
Usare le istruzioni nelle sezioni seguenti per configurare un'istanza di Orchestrator.
Requisiti del server Maverics Identity Orchestrator
È possibile eseguire l'istanza di Orchestrator in qualsiasi server, in locale o in un'infrastruttura cloud pubblica tramite provider, ad esempio Azure, AWS o GCP.
- Sistema operativo: REHL 7.7 o versione successiva, CentOS 7+
- Disco: 10 GB (piccolo)
- Memoria: 16 GB
- Porte: 22 (SSH/SCP), 443, 80
- Accesso radice: per le attività di installazione/amministrazione
-
Maverics Identity Orchestrator: viene eseguito come utente
maverics
insystemd
- Uscita di rete: dal server che ospita Maverics Identity Orchestrator che può raggiungere il tenant Microsoft Entra
Installare Maverics Identity Orchestrator
Ottenere la versione più recente del pacchetto RPM di Maverics.
Inserire il pacchetto nel sistema che si vuole installare Maverics. Se si esegue la copia in un host remoto, usare SSH scp.
Eseguire il comando seguente. Usare il nome file per sostituire
maverics.rpm
.sudo rpm -Uvf maverics.rpm
Per impostazione predefinita, Maverics si trova nella
/usr/local/bin
directory .Maverics viene eseguito come servizio in
systemd
.Per verificare che il servizio Maverics sia in esecuzione, eseguire il comando seguente:
sudo service maverics status
Viene visualizzato il messaggio seguente (o simile).
Redirecting to /bin/systemctl status maverics.service
maverics.service - Maverics
Loaded: loaded (/etc/systemd/system/maverics.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-08-13 16:48:01 UTC; 24h ago
Main PID: 330772 (maverics)
Tasks: 5 (limit: 11389)
Memory: 14.0M
CGroup: /system.slice/maverics.service
└─330772 /usr/local/bin/maverics --config /etc/maverics/maverics.yaml
Nota
Se Maverics non viene avviato, eseguire il comando seguente:
journalctl --unit=maverics.service --reverse
Nell'output viene visualizzata la voce di log più recente.
- Il file predefinito
maverics.yaml
viene creato nella/etc/maverics
directory . - Configurare Orchestrator per proteggere l'applicazione.
- Eseguire l'integrazione con Azure AD B2C e archiviare.
- Recuperare i segreti da Azure Key Vault.
- Definire la posizione da cui Orchestrator legge la configurazione.
Specificare la configurazione usando le variabili di ambiente
Configurare le istanze di Orchestrator con le variabili di ambiente.
MAVERICS_CONFIG
Questa variabile di ambiente indica all'istanza di Orchestrator quali file di configurazione YAML usare e dove trovarli durante l'avvio o il riavvio. Impostare la variabile di ambiente in /etc/maverics/maverics.env
.
Creare la configurazione TLS di Orchestrator
Il tls
campo in maverics.yaml
dichiara le configurazioni di sicurezza del livello di trasporto usate dall'istanza di Orchestrator. I connettori usano oggetti TLS e il server Orchestrator.
La chiave maverics
è riservata al server di Orchestrator. Usare altre chiavi per inserire un oggetto TLS in un connettore.
tls:
maverics:
certFile: /etc/maverics/maverics.cert
keyFile: /etc/maverics/maverics.key
Configurare il connettore Azure AD B2C
Gli agenti di orchestrazione usano connettori per l'integrazione con provider di autenticazione e attributi. Il gateway app Orchestrators usa il connettore Azure AD B2C come provider di autenticazione e attributo. Azure AD B2C usa il social IdP per l'autenticazione e quindi fornisce attributi all'agente di orchestrazione, passandoli nelle attestazioni impostate nelle intestazioni HTTP.
La configurazione del connettore corrisponde all'app registrata nel tenant di Azure AD B2C.
- Dalla configurazione dell'app copiare l'ID client, il segreto client e l'URI di reindirizzamento nel tenant.
- Immettere un nome connettore (ad esempio è
azureADB2C
). - Impostare il connettore
type
suazure
. - Prendere nota del nome del connettore. Questo valore verrà usato in altri parametri di configurazione.
- Impostare
authType
suoidc
. - Per il parametro impostare l'ID
oauthClientID
client copiato. - Per il
oauthClientSecret
parametro impostare il segreto client copiato. - Per il parametro impostare l'URI
oauthRedirectURL
di reindirizzamento copiato. - Il connettore OIDC di Azure AD B2C usa l'endpoint OIDC per individuare i metadati, inclusi GLI URL e le chiavi di firma. Per l'endpoint tenant, usare
oidcWellKnownURL
.
connectors:
name: azureADB2C
type: azure
oidcWellKnownURL: https://<tenant name>.b2clogin.com/<tenant name>.onmicrosoft.com/B2C_1_login/v2.0/.well-known/openid-configuration
oauthRedirectURL: https://example.com/oidc-endpoint
oauthClientID: <azureADB2CClientID>
oauthClientSecret: <azureADB2CClientSecret>
authType: oidc
Definire Azure AD B2C come provider di autenticazione
Un provider di autenticazione determina l'autenticazione per gli utenti che non presentano una sessione valida durante una richiesta di risorse dell'app. La configurazione del tenant di Azure AD B2C determina la modalità di richiesta degli utenti per le credenziali, mentre applica altri criteri di autenticazione. Un esempio consiste nel richiedere un secondo fattore per completare l'autenticazione e decidere cosa viene restituito al gateway app orchestratore, dopo l'autenticazione.
Il valore per l'oggetto deve corrispondere al authProvider
valore del connettore name
.
authProvider: azureADB2C
Proteggere le app locali con un gateway app di Orchestrator
La configurazione di Orchestrator App Gateway dichiara come Azure AD B2C protegge l'applicazione e il modo in cui gli utenti accedono all'app.
- Immettere un nome del gateway app.
- Impostare
location
. Nell'esempio viene usata la radice/
dell'app . - Definire l'applicazione protetta in
upstream
. Usare la convenzione host:port:https://example.com:8080
. - Impostare i valori per le pagine di errore e non autorizzate.
- Definire i nomi di intestazione HTTP e i valori di attributo per l'applicazione per stabilire l'autenticazione e il controllo. I nomi di intestazione corrispondono in genere alla configurazione dell'app. I valori degli attributi sono spazi dei nomi del connettore. Nell'esempio i valori restituiti da Azure AD B2C vengono preceduti dal nome
azureADB2C
del connettore . Il suffisso è il nome dell'attributo con il valore richiesto, ad esempiogiven_name
. - Impostare i criteri. Vengono definite tre azioni:
allowUnauthenticated
,allowAnyAuthenticated
eallowIfAny
. Ogni azione è associata a unresource
oggetto . I criteri vengono valutati per taleresource
oggetto .
Nota
headers
e policies
usare le estensioni del servizio JavaScript o GoLang per implementare la logica arbitraria.
appgateways:
- name: Sonar
location: /
upstream: https://example.com:8080
errorPage: https://example.com:8080/sonar/error
unauthorizedPage: https://example.com:8080/sonar/accessdenied
headers:
SM_USER: azureADB2C.sub
firstname: azureADB2C.given_name
lastname: azureADB2C.family_name
policies:
- resource: ~ \.(jpg|png|ico|svg)
allowUnauthenticated: true
- resource: /
allowAnyAuthenticated: true
- resource: /sonar/daily_deals
allowIfAny:
azureADB2C.customAttribute: Rewards Member
Azure Key Vault come provider di segreti
Proteggere i segreti usati da Orchestrator per connettersi ad Azure AD B2C e ad altri sistemi di identità. Maverics carica i segreti in testo normale fuori maverics.yaml
da , tuttavia, in questa esercitazione, usare Azure Key Vault come provider di segreti.
Seguire le istruzioni riportate in Avvio rapido: Impostare e recuperare un segreto da Azure Key Vault usando il portale di Azure. Aggiungere i segreti all'insieme SECRET NAME
di credenziali e prendere nota di per ogni segreto. Ad esempio, AzureADB2CClientSecret
.
Per dichiarare un valore come segreto in un file di configurazione maverics.yaml
, racchiudere il segreto tra parentesi angolari:
connectors:
- name: AzureADB2C
type: azure
oauthClientID: <AzureADB2CClientID>
oauthClientSecret: <AzureADB2CClientSecret>
Il valore nelle parentesi angolari deve corrispondere a quello specificato a un segreto nell'Key Vault SECRET NAME
di Azure.
Per caricare i segreti da Azure Key Vault, impostare la variabile MAVERICS_SECRET_PROVIDER
di ambiente nel file , con le credenziali presenti nel file /etc/maverics/maverics.env
azure-credentials.json. Usare il modello seguente:
MAVERICS_SECRET_PROVIDER='azurekeyvault://<KEYVAULT NAME>.vault.azure.net?clientID=<APPID>&clientSecret=<PASSWORD>&tenantID=<TENANT>'
Completare la configurazione
Le informazioni seguenti illustrano come viene visualizzata la configurazione dell'agente di orchestrazione.
version: 0.4.2
listenAddress: ":443"
tls:
maverics:
certFile: certs/maverics.crt
keyFile: certs/maverics.key
authProvider: azureADB2C
connectors:
- name: azureADB2C
type: azure
oidcWellKnownURL: https://<tenant name>.b2clogin.com/<tenant name>.onmicrosoft.com/B2C_1_login/v2.0/.well-known/openid-configuration
oauthRedirectURL: https://example.com/oidc-endpoint
oauthClientID: <azureADB2CClientID>
oauthClientSecret: <azureADB2CClientSecret>
authType: oidc
appgateways:
- name: Sonar
location: /
upstream: http://example.com:8080
errorPage: http://example.com:8080/sonar/accessdenied
unauthorizedPage: http://example.com:8080/sonar/accessdenied
headers:
SM_USER: azureADB2C.sub
firstname: azureADB2C.given_name
lastname: azureADB2C.family_name
policies:
- resource: ~ \.(jpg|png|ico|svg)
allowUnauthenticated: true
- resource: /
allowAnyAuthenticated: true
- resource: /sonar/daily_deals
allowIfAny:
azureADB2C.customAttribute: Rewards Member
Testare il flusso
- Passare all'URL dell'applicazione locale,
https://example.com/sonar/dashboard
. - Orchestrator reindirizza alla pagina del flusso utente.
- Nell'elenco selezionare IdP.
- Immettere le credenziali, incluso un token MFA, se richiesto dall'IDP.
- Si viene reindirizzati ad Azure AD B2C, che inoltra la richiesta dell'app all'URI di reindirizzamento di Orchestrator.
- Orchestrator valuta i criteri e calcola le intestazioni.
- Viene visualizzata l'applicazione richiesta.