Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 avvio rapido utilizza Microsoft Authentication Library per Node.js (MSAL Node) con l'autorizzazione con le credenziali del 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 permesso solo per app richiede il consenso dell'amministratore: un amministratore della tua directory deve concedere il consenso alla tua applicazione. Selezionare una delle opzioni seguenti in base al ruolo:
Amministratore del locatario
Se sei un amministratore, vai alla pagina Autorizzazioni API, quindi seleziona 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.
Nodo MSAL
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 di 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 clientIdID applicazione (client) dell'applicazione registrata nel portale di Azure. Questo valore è riportato nella pagina Panoramica dell'app nel portale di Azure. authorityL'endpoint del servizio token di sicurezza per l'autenticazione dell'utente. 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 tokenRequestContiene gli ambiti richiesti. Per i client riservati, dovrebbe essere usato un formato simile a {Application ID URI}/.defaultper 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.tokenResponseLa 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 ulteriori informazioni sullo sviluppo di app daemon/console con MSAL Node, consulta l'esercitazione: