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
- Node.js
- Visual Studio Code eller någon annan kodredigerare
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:
- Logga in på administrationscentret för Microsoft Entra som minst programadministratör.
- Bläddra till Appregistreringar för identitetsprogram>>.
- Välj Ny registrering.
- 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. - Välj Registrera.
- Under Hantera väljer du Certifikat och hemligheter.
- 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.
- Under Hantera väljer du API-behörigheter>Lägg till en behörighet. Välj Microsoft Graph.
- Välj Programbehörigheter.
- Under Användarnod väljer du User.Read.All och sedan Lägg till behörigheter.
Steg 2: Ladda ned Node.js exempelprojektet
Steg 3: Konfigurera Node.js exempelprojekt
Extrahera zip-filen till en lokal mapp nära roten på disken, till exempel C:/Azure-Samples.
Redigera .env och ersätt värdena för fälten
TENANT_ID
,CLIENT_ID
ochCLIENT_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.
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
medhttps://login.microsoftonline.com
. - För Microsoft Graph-slutpunkten ersätter du
Enter_the_Graph_Endpoint_Here
medhttps://graph.microsoft.com/
.
- För Microsoft Entra-slutpunkten ersätter du
Steg 4: 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 programbehörigheter kräver administratörsmedgivande: Någon som har tilldelats rollen Programadministratör måste ge ditt program medgivande. Välj något av alternativen nedan beroende på din roll:
Administratörer
Om du har tilldelats rollen Programadministratö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 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
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 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 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: