Snabbstart: Hämta en token och anropa Microsoft Graph från en Node.js konsolapp

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

Registrera och ladda ned exempelprogrammet

Följ stegen nedan för att komma igång.

Steg 1: Registrera programmet

Dricks

Stegen i den här artikeln kan variera något beroende på vilken portal du börjar från.

Du registrerar programmet och lägger till appens registreringsinformationen i lösningen manuellt med hjälp av följande steg:

  1. Logga in på administrationscentret för Microsoft Entra som minst programadministratör.
  2. Bläddra till Identitetsprogram>> Appregistreringar.
  3. Välj Ny registrering.
  4. Ange ett namn för ditt program, till exempel msal-node-cli. Användare av din app kan se det här namnet och du kan ändra det senare.
  5. Välj Registrera.
  6. Under Hantera väljer du Certifikat och hemligheter.
  7. Under Klienthemligheter väljer du Ny klienthemlighet, anger ett namn och väljer sedan Lägg till. Registrera det hemliga värdet på en säker plats för användning i ett senare steg.
  8. Under Hantera väljer du API-behörigheter>Lägg till en behörighet. Välj Microsoft Graph.
  9. Välj Programbehörigheter.
  10. Under Användarnod väljer du User.Read.All och sedan Lägg till behörigheter.

Steg 2: Ladda ned Node.js exempelprojektet

Ladda ned kodexemplet

Steg 3: Konfigurera Node.js exempelprojekt

  1. Extrahera zip-filen till en lokal mapp nära roten på disken, till exempel C:/Azure-Samples.

  2. Redigera .env och ersätt värdena för fälten TENANT_ID, CLIENT_IDoch CLIENT_SECRET med följande kodfragment:

    "TENANT_ID": "Enter_the_Tenant_Id_Here",
    "CLIENT_ID": "Enter_the_Application_Id_Here",
    "CLIENT_SECRET": "Enter_the_Client_Secret_Here"
    

    Där:

    • Enter_the_Application_Id_Here– är program-ID:t (klient) för det program som du registrerade tidigare. Hitta det här ID:t i appregistreringens Översikt.
    • Enter_the_Tenant_Id_Here – ersätt det här värdet med klient-ID :t eller klientorganisationens namn (till exempel contoso.microsoft.com). Hitta dessa värden i appregistreringens översikt.
    • Enter_the_Client_Secret_Here – ersätt det här värdet med den klienthemlighet som du skapade tidigare. Om du vill generera en ny nyckel använder du Certifikat och hemligheter i appregistreringsinställningarna.

    Att använda en klartexthemlighet i källkoden utgör en ökad säkerhetsrisk för ditt program. Även om exemplet i den här snabbstarten använder en klartextklienthemlighet är det bara för enkelhetens skull. Vi rekommenderar att du använder certifikatautentiseringsuppgifter i stället för klienthemligheter i dina konfidentiella klientprogram, särskilt de appar som du tänker distribuera till produktion.

  3. Redigera .env och ersätt Microsoft Entra-ID:t och Microsoft Graph-slutpunkterna med följande värden:

    • För Microsoft Entra-slutpunkten ersätter du Enter_the_Cloud_Instance_Id_Here med https://login.microsoftonline.com.
    • För Microsoft Graph-slutpunkten ersätter du Enter_the_Graph_Endpoint_Here med https://graph.microsoft.com/.

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 programbehörigheter kräver administratörsmedgivande: en programadministratör eller global administratör måste ge sitt medgivande till ditt program. Välj något av alternativen nedan beroende på din roll:

Administratörer

Om du har tilldelats rollen Programadministratör eller Global administratör går du till sidan API-behörigheter i Azure-portalens programregistrering och väljer Bevilja administratörsmedgivande för {Klientnamn} (där {Klientnamn} är namnet på din katalog).

Standardanvändare

Om du är en standardanvändare av din klientorganisation måste du be en global administratö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

Där:

  • Enter_the_Tenant_Id_Here – ersätt det här värdet med klient-ID eller klientnamn (t.ex. contoso.microsoft.com)
  • Enter_the_Application_Id_Here – är program-ID (klient) för programmet som du har registrerat.

Steg 5: Köra appen

Leta upp exemplets rotmapp (där package.json finns) i en kommandotolk eller konsol. Du måste installera de beroenden som din exempelapp kräver innan du kör den för första gången:

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 offentliga moln, där {tenant} är namnet på din klientorganisation eller ditt klient-ID.
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: