Avvio rapido: Acquisire un token e chiamare l'API Microsoft Graph da un'app console Node.js usando l'identità dell'app
Ti diamo il benvenuto! Questa probabilmente non è la pagina che ci si aspettava. Mentre lavoriamo a una correzione, questo collegamento dovrebbe portare all'articolo corretto:
Avvio rapido: Acquisire un token e chiamare Microsoft Graph da un'app console di Node.js
Ci scusiamo per l'inconveniente e ringraziamo per la pazienza mentre lavoriamo per risolvere il problema.
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
- Node.JS
- Visual Studio Code o un altro editor di codice
Scaricare e configurare l'app di esempio
Passaggio 1: Configurare l'applicazione nel portale di Azure
Per fare in modo che l'esempio di codice per questo avvio rapido funzioni, è necessario creare un segreto client e aggiungere l'autorizzazione dell'applicazione User.Read.All dell'API Graph.
L'applicazione è configurata con questi attributi.
Passaggio 2: Scaricare il progetto di esempio Node.js
Nota
Enter_the_Supported_Account_Info_Here
Passaggio 3: Consenso amministratore
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 amministratore della directory deve fornire il consenso all'applicazione. Selezionare una delle opzioni seguenti in base al ruolo:
Amministratore tenant
Se si è un amministratore, passare alla pagina Autorizzazioni API selezionare Concedi consenso amministratore per > Enter_the_Tenant_Name_Here
Utente standard
Se si è un utente standard del tenant, è necessario chiedere almeno 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
Passaggio 4: Eseguire l'applicazione
Individuare la cartella radice dell'esempio (dove si trova package.json
) in un prompt dei comandi o in una console. Le dipendenze di questo esempio devono essere installate una sola 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 ahttps://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: