Esercitazione: Assegnare ruoli personalizzati con una funzione e Microsoft Graph
Questo articolo illustra come usare una funzione per eseguire query su Microsoft Graph e assegnare ruoli personalizzati a un utente in base all'appartenenza al gruppo di Active Directory.
Questa esercitazione apprendi come:
- Distribuire un'app Web statica.
- Creare una registrazione dell'app Microsoft Entra.
- Configurare l'autenticazione personalizzata con Microsoft Entra ID.
- Configurare una funzione serverless che esegue una query sull'appartenenza al gruppo di Active Directory dell'utente e restituisce un elenco di ruoli personalizzati.
Nota
Questa esercitazione richiede l'uso di una funzione per assegnare ruoli. La gestione dei ruoli basata su funzioni è attualmente in anteprima. Il livello di autorizzazione necessario per completare questa esercitazione è "User.Read.All".
Esiste una funzione denominata GetRoles nell'API dell'app. Questa funzione usa il token di accesso dell'utente per eseguire query su Active Directory da Microsoft Graph. Se l'utente è membro di qualsiasi gruppo definito nell'app, viene eseguito il mapping dei ruoli personalizzati corrispondenti all'utente.
Prerequisiti
Requisito | Commenti |
---|---|
Account Azure attivo | Se non si ha un account, è possibile crearne uno gratuito. |
Problema relativo alle autorizzazioni di Microsoft Entra | È necessario disporre di autorizzazioni sufficienti per creare un'applicazione Microsoft Entra. |
Creare un repository GitHub
Generare un repository basato sul modello di funzione ruoli. Passare al percorso seguente per creare un nuovo repository.
Assegnare al repository il nome my-custom-roles-app.
Selezionare Create repository from template (Crea repository da modello).
Distribuire l'app Web statica in Azure
In una nuova finestra del browser aprire il portale di Azure.
Nell'angolo superiore sinistro selezionare Crea una risorsa.
Nella casella di ricerca digitare app Web statiche.
Selezionare App Web statiche.
Seleziona Crea.
Configurare l'app Web statica con le informazioni seguenti:
Impostazione Valore Note Abbonamento Seleziona la tua sottoscrizione di Azure. Gruppo di risorse Creare un nuovo gruppo denominato my-custom-roles-app-group. Nome my-custom-roles-app Tipo di piano Standard La personalizzazione dell'autenticazione e l'assegnazione di ruoli tramite una funzione richiedono il piano Standard . Area per l'API Selezionare l'area più vicina. Nella sezione Dettagli distribuzione:
Impostazione Valore Origine Selezionare GitHub. Organization Selezionare l'organizzazione in cui è stato generato il repository. Repository Selezionare my-custom-roles-app. Filiale Selezionare main. Nella sezione Dettagli compilazione aggiungere i dettagli di configurazione per questa app.
Impostazione Valore Note Set di impostazioni di compilazione Seleziona Personalizza. App location (Percorso app) Immettere /frontend. Questa cartella contiene l'applicazione front-end. Posizione dell'API /Api Cartella nel repository contenente le funzioni API. Percorso di output Lasciare vuoto. Questa app non ha output di compilazione. Selezionare Rivedi e crea.
Selezionare Crea per avviare la prima distribuzione.
Al termine del processo, selezionare Vai alla risorsa per aprire la nuova app Web statica.
Nella sezione panoramica individuare l'URL dell'applicazione. Copiare questo valore in un editor di testo da usare nei passaggi successivi per configurare l'autenticazione di Active Directory.
Creare un'applicazione Microsoft Entra
Nella portale di Azure cercare e passare a Microsoft Entra ID.
Scegliere Registrazioni app dal menu Gestisci.
Selezionare Nuova registrazione per aprire la finestra Registra un'applicazione . Immettere i valori seguenti:
Impostazione Valore Note Nome Immettere MyStaticWebApp. Tipi di account supportati Selezionare Account solo in questa directory dell'organizzazione. URI di reindirizzamento Selezionare Web e immettere l'URL di callback di autenticazione Di Microsoft Entra dell'app Web statica. Sostituire <YOUR_SITE_URL>
in<YOUR_SITE_URL>/.auth/login/aad/callback
con l'URL dell'app Web statica.Questo URL è quello copiato in un editor di testo in un passaggio precedente. Selezionare Registra.
Dopo aver creato la registrazione dell'app, copiare l'ID applicazione (client) e l'ID directory (tenant) nella sezione Informazioni di base in un editor di testo.
Questi valori sono necessari per configurare l'autenticazione di Active Directory nell'app Web statica.
Abilitare i token ID
Nelle impostazioni di registrazione dell'app selezionare Autenticazione in Gestisci.
Nella sezione Implicit grant and hybrid flows (Concessione implicita e flussi ibridi) selezionare ID tokens (used for implicit and hybrid flows) (ID token - Usati per flussi impliciti e ibridi).
Il runtime App Web statiche richiede questa configurazione per autenticare gli utenti.
Seleziona Salva.
Creare un segreto client
Nelle impostazioni di registrazione dell'app selezionare Certificati e segreti in Gestisci.
Nella sezione Segreti client seleziona Nuovo segreto client.
Per il campo Descrizione immettere MyStaticWebApp.
Per il campo Scadenza lasciare il valore predefinito di 6 mesi.
Nota
Devi ruotare il segreto prima della data di scadenza generando un nuovo segreto e aggiornando l'app con il relativo valore.
Selezionare Aggiungi.
Copiare il valore del segreto client creato in un editor di testo.
Questo valore è necessario per configurare l'autenticazione di Active Directory nell'app Web statica.
Configurare l'autenticazione di Active Directory
In un browser aprire il repository GitHub contenente l'app Web statica distribuita.
Passare al file di configurazione dell'app in front-end/staticwebapp.config.json. Questo file contiene la sezione seguente:
"auth": { "rolesSource": "/api/GetRoles", "identityProviders": { "azureActiveDirectory": { "userDetailsClaim": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", "registration": { "openIdIssuer": "https://login.microsoftonline.com/<YOUR_AAD_TENANT_ID>", "clientIdSettingName": "AAD_CLIENT_ID", "clientSecretSettingName": "AAD_CLIENT_SECRET" }, "login": { "loginParameters": [ "resource=https://graph.microsoft.com" ] } } } },
Questa configurazione è costituita dalle impostazioni seguenti:
Proprietà Descrizione rolesSource
URL in cui il processo di accesso ottiene un elenco di ruoli disponibili. Per l'applicazione di esempio, l'URL è /api/GetRoles
.userDetailsClaim
URL dello schema usato per convalidare la richiesta di accesso. openIdIssuer
La route di accesso di Microsoft Entra, aggiunta con l'ID tenant. clientIdSettingName
ID client Microsoft Entra. clientSecretSettingName
Valore del segreto client Microsoft Entra. loginParameters
Per ottenere un token di accesso per Microsoft Graph, il loginParameters
campo deve essere configurato conresource=https://graph.microsoft.com
.Selezionare Modifica per aggiornare il file.
Aggiornare il valore openIdIssuer di
https://login.microsoftonline.com/<YOUR_AAD_TENANT_ID>
sostituendo<YOUR_AAD_TENANT_ID>
con l'ID directory (tenant) dell'ID Microsoft Entra.Selezionare Commit changes (Esegui commit modifiche).
Immettere un messaggio di commit e selezionare Commit changes (Esegui commit modifiche).
Il commit di queste modifiche avvia un'esecuzione di GitHub Actions per aggiornare l'app Web statica.
Passare alla risorsa app Web statica nella portale di Azure.
Selezionare Configurazione nella barra dei menu.
Nella sezione Impostazioni applicazione aggiungere le impostazioni seguenti:
Nome valore AAD_CLIENT_ID
ID applicazione (client) di Active Directory. AAD_CLIENT_SECRET
Valore del segreto client dell'applicazione Active Directory. Seleziona Salva.
Creazione di ruoli
Aprire la registrazione dell'app Active Directory nel portale di Azure.
In Gestisci selezionare Ruoli app.
Selezionare Crea ruolo app e immettere i valori seguenti:
Impostazione Valore Nome visualizzato Immettere admin. Tipi di membro consentiti Selezionare Utenti/Gruppi. Valore Immettere admin. Descrizione Immettere Amministrazione istrator. Selezionare la casella Vuoi abilitare questo ruolo dell'app?
Selezionare Applica.
Ripetere ora lo stesso processo per un ruolo denominato reader.
Copiare i valori ID per ogni ruolo e metterli da parte in un editor di testo.
Verificare i ruoli personalizzati
L'applicazione di esempio contiene una funzione API (api/GetRoles/index.js) che esegue una query su Microsoft Graph per determinare se un utente si trova in un gruppo predefinito.
In base alle appartenenze ai gruppi dell'utente, la funzione assegna ruoli personalizzati all'utente. L'applicazione è configurata per limitare determinate route in base a questi ruoli personalizzati.
Nel repository GitHub passare alla funzione GetRoles disponibile in api/GetRoles/index.js.
Nella parte superiore è presente un
roleGroupMappings
oggetto che esegue il mapping dei ruoli utente personalizzati ai gruppi di Microsoft Entra.Seleziona Modifica.
Aggiornare l'oggetto con ID gruppo dal tenant di Microsoft Entra.
Ad esempio, se sono presenti gruppi con ID
6b0b2fff-53e9-4cff-914f-dd97a13bfbd6
eb6059db5-9cef-4b27-9434-bb793aa31805
, aggiornare l'oggetto in:const roleGroupMappings = { 'admin': '6b0b2fff-53e9-4cff-914f-dd97a13bfbd6', 'reader': 'b6059db5-9cef-4b27-9434-bb793aa31805' };
La funzione GetRoles viene chiamata ogni volta che un utente viene autenticato correttamente con Microsoft Entra ID. La funzione usa il token di accesso dell'utente per eseguire una query sull'appartenenza al gruppo di Active Directory da Microsoft Graph. Se l'utente è membro di qualsiasi gruppo definito nell'oggetto
roleGroupMappings
, vengono restituiti i ruoli personalizzati corrispondenti.Nell'esempio precedente, se un utente è membro del gruppo di Active Directory con ID
b6059db5-9cef-4b27-9434-bb793aa31805
, viene concesso ilreader
ruolo .Selezionare Commit changes (Esegui commit modifiche).
Aggiungere un messaggio di commit e selezionare Commit changes (Esegui commit modifiche).
L'esecuzione di queste modifiche avvia una compilazione in per aggiornare l'app Web statica.
Al termine della distribuzione, è possibile verificare le modifiche passando all'URL dell'app.
Accedere all'app Web statica usando Microsoft Entra ID.
Dopo aver eseguito l'accesso, l'app di esempio visualizza l'elenco dei ruoli assegnati in base all'appartenenza al gruppo di Active Directory dell'identità.
A seconda di questi ruoli, è consentito o vietato accedere ad alcune delle route nell'app.
Nota
Alcune query su Microsoft Graph restituiscono più pagine di dati. Quando sono necessarie più richieste di query, Microsoft Graph restituisce una @odata.nextLink
proprietà nella risposta che contiene un URL alla pagina successiva dei risultati. Per altre informazioni, vedere Paging dei dati di Microsoft Graph nell'app
Pulire le risorse
Eliminare le risorse distribuite eliminando il gruppo di risorse.
Nel portale di Azure selezionare Gruppo di risorse nel menu a sinistra.
Immettere il nome del gruppo di risorse nel campo Filtra per nome.
Selezionare il nome del gruppo di risorse usato in questa esercitazione.
Selezionare Elimina gruppo di risorse nel menu in alto.