Snabbstart: Hämta en token och anropa Microsoft Graph API från en Node.js-konsolapp med hjälp av appens identitet
Välkommen! Det här är förmodligen inte den sida du förväntade dig. När vi arbetar med en korrigering bör den här länken ta dig till rätt artikel:
Snabbstart: Hämta en token och anropa Microsoft Graph från en Node.js konsolapp
Vi ber om ursäkt för besväret och uppskattar ditt tålamod medan vi arbetar för att få detta löst.
I den här snabbstarten laddar du ned och kör ett kodexempel som visar hur ett Node.js konsolprogram kan hämta en åtkomsttoken med hjälp av appens identitet för att anropa Microsoft Graph API och visa en lista över användare i katalogen. Kodexemplet visar hur ett obevakat jobb eller En Windows-tjänst kan köras med en programidentitet i stället för en användares identitet.
Den här snabbstarten använder Microsoft Authentication Library for Node.js (MSAL Node) med de autentiseringsuppgifter som klienten beviljar.
Förutsättningar
- Node.js
- Visual Studio Code eller någon annan kodredigerare
Ladda ned och konfigurera exempelappen
Steg 1: Konfigurera programmet i Azure Portal
För att kodexemplet för den här snabbstarten ska fungera måste du skapa en klienthemlighet och lägga till Graph-API:ts programbehörighet User.Read.All.
Programmet har konfigurerats med dessa attribut.
Steg 2: Ladda ned Node.js exempelprojektet
Kommentar
Enter_the_Supported_Account_Info_Here
Steg 3: Administratörsmedgivande
Om du försöker köra programmet nu får du http 403 – förbjudet fel: Insufficient privileges to complete the operation
. Det här felet inträffar eftersom alla appbehörigheter kräver administratörsmedgivande: en administratör för din katalog måste ge ditt program medgivande. Välj något av alternativen nedan beroende på din roll:
Klientorganisationsadministratör
Om du är administratör går du till sidan API-behörigheter och väljer Bevilja administratörsmedgivande för > Enter_the_Tenant_Name_Here
Standardanvändare
Om du är en standardanvändare av din klientorganisation måste du be minst en molnprogramadministratör att bevilja administratörsmedgivande för ditt program. Gör detta genom att ge följande URL till administratören:
https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here
Steg 4: Kör programmet
Leta upp exemplets rotmapp (där package.json
finns) i en kommandotolk eller konsol. Du måste installera beroendena för det här exemplet en gång:
npm install
Kör sedan programmet via kommandotolken eller konsolen:
node . --op getUsers
I konsolen bör du se ett JSON-fragment som representerar en lista över användare i din Microsoft Entra-katalog.
Om koden
Nedan beskrivs några av de viktiga aspekterna av exempelprogrammet.
MSAL-nod
MSAL Node är det bibliotek som används för att logga in användare och begära token som används för att komma åt ett API som skyddas av Microsofts identitetsplattform. Enligt beskrivningen begär den här snabbstarten token efter programbehörigheter (med programmets egen identitet) i stället för delegerade behörigheter. Det autentiseringsflöde som används i det här fallet kallas för OAuth 2.0-klientautentiseringsflöde. Mer information om hur du använder MSAL Node med daemon-appar finns i Scenario: Daemon-program.
Du kan installera MSAL Node genom att köra följande npm-kommando.
npm install @azure/msal-node --save
MSAL-initiering
Du kan lägga till referensen för MSAL genom att lägga till följande kod:
const msal = require('@azure/msal-node');
Initiera sedan MSAL med hjälp av följande kod:
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);
Där: beskrivning clientId
Är Program-ID (klient) för det program som registrerats på Azure-portalen. Du hittar det här värdet på appens översiktssida på Azure-portalen. authority
STS-slutpunkten för autentisering av användaren. Vanligtvis https://login.microsoftonline.com/{tenant}
för offentligt moln, där {klient} är namnet på klientorganisationen eller klient-ID:t.clientSecret
Skapas klienthemligheten för programmet i Azure Portal.
Mer information finns i referensdokumentationen för ConfidentialClientApplication
Begära token
Om du vill begära en token med appens identitet använder du metoden acquireTokenByClientCredential
:
const tokenRequest = {
scopes: [ 'https://graph.microsoft.com/.default' ],
};
const tokenResponse = await cca.acquireTokenByClientCredential(tokenRequest);
Där: beskrivning tokenRequest
Innehåller omfattningarna som begärdes. För konfidentiella klienter bör detta använda formatet som liknar för att {Application ID URI}/.default
indikera att de omfång som begärs är de som statiskt definieras i appobjektet som anges i Azure Portal (för Microsoft Graph{Application ID URI}
pekar påhttps://graph.microsoft.com
). För anpassade webb-API:er{Application ID URI}
definieras under Avsnittet Exponera ett API i Azure Portal programregistrering.tokenResponse
Svaret innehåller en åtkomsttoken för de begärda omfången.
Hjälp och support
Om du behöver hjälp, vill rapportera ett problem eller vill lära dig mer om dina supportalternativ kan du läsa Hjälp och support för utvecklare.
Nästa steg
Mer information om utveckling av daemon-/konsolappar med MSAL Node finns i självstudien: