Guida di avvio rapido: Acquisire un token e chiamare Microsoft Graph da un'app console di Node.js

In questa guida di avvio rapido si scarica e si esegue un esempio di codice che mostra come un'applicazione console Node.js può ottenere un token di accesso usando l'identità dell'app per chiamare l'API Microsoft Graph e visualizzare un elenco di utenti nella directory. L'esempio di codice dimostra come è possibile eseguire un processo o un servizio di Windows automatico con un'identità dell'applicazione invece che con un'identità dell'utente.

Questo argomento di avvio rapido usa Microsoft Authentication Library per Node.js (MSAL Node) con la concessione delle credenziali client.

Prerequisiti

Registrare e scaricare l'applicazione di esempio

Per iniziare, seguire questa procedura.

Passaggio 1: Registrare l'applicazione

Suggerimento

I passaggi descritti in questo articolo possono variare leggermente in base al portale di partenza.

Per registrare l'applicazione e aggiungere manualmente le informazioni di registrazione dell'app alla soluzione, seguire questa procedura:

  1. Accedere all'Interfaccia di amministrazione di Microsoft Entra almeno come amministratore applicazione.
  2. Passare a Identità>Applicazioni>Registrazioni app.
  3. Seleziona Nuova registrazione.
  4. In Nome immettere un nome per l'applicazione, ad esempio msal-node-cli. Tale nome, che potrebbe essere visualizzato dagli utenti dell'app, può essere modificato in un secondo momento.
  5. Selezionare Registra.
  6. In Gestisci, selezionare Certificati e segreti.
  7. In Segreti client selezionare Nuovo segreto client, immettere un nome e quindi selezionare Aggiungi. Registrare il valore del segreto in una posizione sicura per usarlo in un passaggio successivo.
  8. In Gestisci selezionare Autorizzazioni API>Aggiungi un'autorizzazione. Selezionare Microsoft Graph.
  9. Seleziona Autorizzazioni applicazione.
  10. Nel nodo Utente selezionare User.Read.All, quindi selezionare Aggiungi autorizzazioni.

Passaggio 2: Scaricare il progetto di esempio Node.js

Scaricare il codice di esempio

Passaggio 3: Configurare il progetto di esempio Node.js

  1. Estrarre il file ZIP in una cartella locale vicina alla radice del disco, ad esempio C:/Azure-Samples.

  2. Modificare .json e sostituire i valori dei campi TENANT_ID, CLIENT_ID e CLIENT_SECRET con il frammento di codice seguente:

    "TENANT_ID": "Enter_the_Tenant_Id_Here",
    "CLIENT_ID": "Enter_the_Application_Id_Here",
    "CLIENT_SECRET": "Enter_the_Client_Secret_Here"
    

    Dove:

    • Enter_the_Application_Id_Here, ovvero l'ID applicazione (client) dell'app registrata precedentemente. Questo ID è disponibile nella pagina Panoramica della registrazione dell'app.
    • Enter_the_Tenant_Id_Here: sostituire questo valore con l'ID tenant o il nome del tenant (ad esempio, contoso.microsoft.com). Questi valori sono disponibili nella pagina Panoramica della registrazione dell'app.
    • Enter_the_Client_Secret_Here: sostituire questo valore con il segreto client creato in precedenza. Per generare una nuova chiave, usare Certificati e segreti nelle impostazioni di registrazione dell'app.

    L'uso di un segreto in testo non crittografato nel codice sorgente comporta un aumento del rischio di sicurezza per l'applicazione. È solo per semplicità se l'esempio in questa guida di avvio rapido usa un segreto client in testo non crittografato. È consigliabile usare le credenziali del certificato anziché i segreti client nelle applicazioni client riservate, in particolare quelle che si intende distribuire nell'ambiente di produzione.

  3. Modificare .env e sostituire gli endpoint di Microsoft Entra ID e Microsoft Graph con i valori seguenti:

    • Per l'endpoint di Microsoft Entra sostituire Enter_the_Cloud_Instance_Id_Here con https://login.microsoftonline.com.
    • Per l'endpoint di Microsoft Graph sostituire Enter_the_Graph_Endpoint_Here con https://graph.microsoft.com/.

Se si prova a eseguire l'applicazione a questo punto, si riceverà l'errore HTTP 403 - Accesso negato: Insufficient privileges to complete the operation. Questo errore si verifica perché qualsiasi autorizzazione solo app richiede il consenso amministratore: un utente con almeno il ruolo Amministratore applicazione assegnato deve fornire il consenso all'applicazione. Selezionare una delle opzioni seguenti in base al ruolo:

Amministratori

Se si dispone di almeno il ruolo Amministratore applicazione, passare alla pagina Autorizzazioni API nella registrazione dell'applicazione del portale di Azure e selezionare Concedi consenso amministratore per {nome tenant}, dove {nome tenant} è il nome della directory.

Utenti standard

Se si è un utente standard del tenant, è necessario chiedere a un amministratore di applicazioni cloud di concedere il consenso amministratore per l'applicazione. A tale scopo, assegnare l'URL seguente all'amministratore:

https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here

Dove:

  • Enter_the_Tenant_Id_Here: sostituire questo valore con l'ID tenant o il nome del tenant (ad esempio, contoso.microsoft.com)
  • Enter_the_Application_Id_Here è l'ID applicazione (client) per l'applicazione registrata.

Passaggio 5: Eseguire l'applicazione

Individuare la cartella radice dell'esempio (dove si trova package.json) in un prompt dei comandi o in una console. È necessario installare le dipendenze necessarie per l'app di esempio prima di eseguirla per la prima volta:

npm install

Eseguire quindi l'applicazione tramite il prompt dei comandi o la console:

node . --op getUsers

Nell’output della console dovrebbe essere visualizzato un frammento JSON che rappresenta un elenco di utenti nella directory Microsoft Entra.

Informazioni sul codice

Di seguito vengono descritti alcuni degli aspetti importanti dell'applicazione di esempio.

MSAL Node

MSAL Node è la libreria usata per concedere l'accesso agli utenti e richiedere i token usati per accedere a un'API protetta da Microsoft Identity Platform. Come descritto, questa guida di avvio rapido richiede i token derivanti dalle autorizzazioni dell'applicazione (mediante l'identità propria dell'applicazione) invece delle autorizzazioni delegate. Il flusso di autenticazione usato in questo caso è noto come flusso delle credenziali client OAuth 2.0. Per altre informazioni sull'uso di MSAL Node con app daemon, vedere Scenario: applicazione daemon.

È possibile installare MSAL Node eseguendo il comando npm seguente.

npm install @azure/msal-node --save

Inizializzazione della libreria MSAL

È possibile aggiungere il riferimento per la libreria MSAL aggiungendo il codice seguente:

const msal = require('@azure/msal-node');

Inizializzare quindi la libreria MSAL usando il codice seguente:

const msalConfig = {
    auth: {
        clientId: "Enter_the_Application_Id_Here",
        authority: "https://login.microsoftonline.com/Enter_the_Tenant_Id_Here",
        clientSecret: "Enter_the_Client_Secret_Here",
   }
};
const cca = new msal.ConfidentialClientApplication(msalConfig);
Dove: Descrizione
clientId ID applicazione (client) dell'applicazione registrata nel portale di Azure. Questo valore è riportato nella pagina Panoramica dell'app nel portale di Azure.
authority Endpoint del servizio token di sicurezza per l'utente da autenticare. in genere https://login.microsoftonline.com/{tenant} per il cloud pubblico, dove {tenant} è il nome del tenant o l'ID tenant.
clientSecret È il segreto client creato per l'applicazione nel portale di Azure.

Per altre informazioni, vedere la documentazione di riferimentoConfidentialClientApplication

Richiesta di token

Per richiedere un token con l'identità dell'app, usare il metodo acquireTokenByClientCredential:

const tokenRequest = {
    scopes: [ 'https://graph.microsoft.com/.default' ],
};

const tokenResponse = await cca.acquireTokenByClientCredential(tokenRequest);
Dove: Descrizione
tokenRequest Contiene gli ambiti richiesti. Per i client riservati, dovrebbe essere usato un formato simile a {Application ID URI}/.default per indicare che gli ambiti che vengono richiesti sono quelli definiti in modo statico nell'oggetto app impostato nel portale di Azure. Per Microsoft Graph, {Application ID URI} punta a https://graph.microsoft.com. Per le API Web personalizzate, {Application ID URI} è definito nella sezione Esporre un'API della registrazione dell'applicazione del portale di Azure.
tokenResponse La risposta contiene un token di accesso per gli ambiti richiesti.

Assistenza e supporto

Se è necessaria assistenza, si vuole segnalare un problema o si vogliono ottenere informazioni sulle opzioni di supporto, vedere Assistenza e supporto per gli sviluppatori.

Passaggi successivi

Per altre informazioni sullo sviluppo di app daemon/console con MSAL Node, vedere l'esercitazione: