Dela via


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

Ladda ned och konfigurera exempelappen

Steg 1: Konfigurera programmet i Azure-portalen

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.

Redan konfigurerad Programmet har konfigurerats med dessa attribut.

Steg 2: Ladda ned Node.js exempelprojektet

Kommentar

Enter_the_Supported_Account_Info_Here

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 Microsoft platforma za identitete. 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 Har klienthemligheten skapats för programmet i Azure-portalen.

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-portalen (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-portalens 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: