Condividi tramite


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

In questa guida introduttiva si scarica ed esegue un esempio di codice che illustra 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.

Questa guida introduttiva usa Microsoft Authentication Library per Node.js (nodo MSAL) 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 da cui si inizia.

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 come almeno un'applicazione Amministrazione istrator.
  2. Passare a Applicazioni> di identità>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 di Node.js

Scaricare il codice di esempio

Passaggio 3: Configurare il progetto di esempio di Node.js

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

  2. Modificare .env e sostituire i valori dei campi TENANT_ID, CLIENT_IDe 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- è l'ID applicazione (client) dell'applicazione registrata in precedenza. Trova questo ID nella 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). Trovare questi valori nella 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. Anche se l'esempio in questa guida introduttiva usa un segreto client in testo non crittografato, è solo per semplicità. È 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 Microsoft Entra ID e Microsoft Graph con i valori seguenti:

    • Per l'endpoint 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 assegnato almeno al ruolo Application Amministrazione istrator deve fornire il consenso all'applicazione. Selezionare una delle opzioni seguenti in base al ruolo:

Amministratori

Se è stato assegnato almeno il ruolo Application Amministrazione istrator, passare alla pagina Autorizzazioni API nella registrazione dell'applicazione di 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 Amministrazione istrator globale 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 package.json risiede) 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

Nella console dovrebbe essere visualizzato un frammento JSON che rappresenta un elenco di utenti nella directory Microsoft Entra.

Informazioni sul codice

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

MSAL Node

Il nodo MSAL è la libreria usata per accedere agli utenti e richiedere token usati per accedere a un'API protetta da Microsoft Identity Platform. Come descritto, questa guida introduttiva richiede token in base alle autorizzazioni dell'applicazione (usando la propria identità dell'applicazione) anziché le autorizzazioni delegate. Il flusso di autenticazione usato in questo caso è noto come flusso di 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 Segreto client creato per l'applicazione in 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, questo deve usare il formato simile a {Application ID URI}/.default per indicare che gli ambiti 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 nella registrazione dell'applicazione di 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: