Quickstart: Een token verkrijgen en Microsoft Graph aanroepen vanuit een Node.js-console-app

In deze quickstart downloadt u een codevoorbeeld en voert u dit uit. Het codevoorbeeld laat zien hoe u met een Node.js consoletoepassing een toegangstoken kunt krijgen, met behulp van de app-id, om de Microsoft Graph API aan te roepen en een lijst met gebruikers weer te geven in de map. Het codevoorbeeld laat zien hoe een taak of Windows-service zonder toezicht kan worden uitgevoerd met een toepassings-id, in plaats van een gebruikers-id.

In deze quickstart wordt de Microsoft Authentication Library voor Node.js (MSAL Node) gebruikt met het verlenen van clientreferenties.

Vereisten

De voorbeeldtoepassing downloaden en registreren

Voer de onderstaande stappen uit om aan de slag te gaan.

Stap 1: De toepassing registreren

Tip

Stappen in dit artikel kunnen enigszins variƫren op basis van de portal waaruit u begint.

Volg deze stappen om de toepassing te registreren en de registratiegegevens van de app handmatig toe te voegen aan uw oplossing:

  1. Meld u aan bij het Microsoft Entra-beheercentrum als ten minste een toepassings-Beheer istrator.
  2. Blader naar identiteitstoepassingen>> App-registraties.
  3. Selecteer Nieuwe registratie.
  4. Voer een Naam in voor de toepassing, bijvoorbeeld msal-node-cli. Gebruikers van uw app kunnen de naam zien. U kunt deze later wijzigen.
  5. Selecteer Registreren.
  6. Selecteer onder Beheren de optie Certificaten en geheimen.
  7. Selecteer onder Clientgeheimen de optie Nieuw clientgeheim. Voer een naam in en selecteer vervolgens Toevoegen. Noteer de waarde voor het geheim op een veilige locatie, voor gebruik in een latere stap.
  8. Selecteer onder Beheren achtereenvolgens API-machtigingen>Een machtiging toevoegen. Selecteer Microsoft Graph.
  9. Selecteer Toepassingstoestemming.
  10. Selecteer onder het knooppunt Gebruiker de optie User.Read.All. Selecteer vervolgens Machtigingen toevoegen.

Stap 2: Het Node.js-voorbeeldproject downloaden

Het codevoorbeeld downloaden

Stap 3: Het Node.js-voorbeeldproject configureren

  1. Pak het zip-bestand uit in een lokale map dicht bij de hoofdmap van de schijf, bijvoorbeeld C:/Azure-Samples.

  2. Bewerk .env en vervang de waarden van de velden TENANT_ID, CLIENT_ID en CLIENT_SECRET door het volgende fragment:

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

    Hierin:

    • Enter_the_Application_Id_Here: is de id van de toepassing (client) van de toepassing die u eerder hebt geregistreerd. Zoek deze id in het overzicht van de app-registratie.
    • Enter_the_Tenant_Id_Here: vervang deze waarde door de Tenant-id of Tenantnaam (bijvoorbeeld contoso.microsoft.com). Zoek deze waarden in het overzicht van de app-registratie.
    • Enter_the_Client_Secret_Here: vervang deze waarde door het clientgeheim dat u eerder hebt gemaakt. Als u een nieuwe sleutel wilt genereren, gebruikt u Certificaten en geheimen in de app-registratie-instellingen.

    Het gebruik van een geheim zonder tekst in de broncode vormt een verhoogd beveiligingsrisico voor uw toepassing. Hoewel in het voorbeeld in deze quickstart een clientgeheim zonder opmaak wordt gebruikt, is dit alleen voor de eenvoud. We raden u aan certificaatreferenties te gebruiken in plaats van clientgeheimen in uw vertrouwelijke clienttoepassingen, met name die apps die u wilt implementeren in productie.

  3. Bewerk .env en vervang de Microsoft Entra-id en Microsoft Graph-eindpunten door de volgende waarden:

    • Vervang voor het Microsoft Entra-eindpunt door Enter_the_Cloud_Instance_Id_Herehttps://login.microsoftonline.com.
    • Vervang voor het Microsoft Graph-eindpunt door Enter_the_Graph_Endpoint_Herehttps://graph.microsoft.com/.

Als u op dit moment probeert de toepassing uit te voeren, krijgt u de foutmelding HTTP 403: verboden: Insufficient privileges to complete the operation. Deze fout treedt op omdat voor elke app alleen beheerderstoestemming is vereist: een toepassing Beheer istrator of Global Beheer istrator moet toestemming geven aan uw toepassing. Selecteer een van de opties hieronder, afhankelijk van uw rol:

Beheerders

Als u de rollen Application Beheer istrator of Global Beheer istrator hebt toegewezen, gaat u naar de pagina API-machtigingen in de toepassingsregistratie van de Azure-portal en selecteert u Beheerderstoestemming verlenen voor {Tenant Name} (waarbij {Tenant Name} de naam van uw directory is).

Standaardgebruikers

Als u een standaardgebruiker van uw tenant bent, moet u een Globale Beheer istrator vragen om beheerderstoestemming te verlenen voor uw toepassing. Daarvoor verstrekt u de volgende URL aan uw beheerder:

https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here

Hierin:

  • Enter_the_Tenant_Id_Here: vervang deze waarde door de Tenant-id of Tenantnaam (bijvoorbeeld contoso.microsoft.com)
  • Enter_the_Application_Id_Here: is de toepassings-id (client-id) voor de toepassing die u hebt geregistreerd.

Stap 5: De toepassing uitvoeren

Zoek de hoofdmap van het voorbeeld (waar package.json deze zich bevindt) in een opdrachtprompt of console. U moet de afhankelijkheden installeren die uw voorbeeld-app nodig heeft voordat u deze voor het eerst uitvoert:

npm install

Voer dan de toepassing uit via de opdrachtprompt of console:

node . --op getUsers

U ziet in de console uitvoer een JSON-fragment dat een lijst met gebruikers in uw Microsoft Entra-map vertegenwoordigt.

Over de code

Hieronder worden enkele belangrijke aspecten van de voorbeeldtoepassing besproken.

MSAL Node

MSAL Node is de bibliotheek die wordt gebruikt voor het aanmelden van gebruikers en de aanvraagtokens die worden gebruikt voor toegang tot een API die is beveiligd via het Microsoft-identiteitsplatform. Zoals beschreven, worden met deze snelstart tokens aangevraagd door toepassingstoestemming (met behulp van de eigen identiteit van de toepassing) in plaats van gedelegeerde machtigingen. De verificatiestroom die in dit voorbeeld wordt gebruikt, staat bekend als de OAuth-stroom voor clientreferenties. Zie Scenario: Daemon-toepassing voor meer informatie over het gebruik van MSAL Node met daemonapps.

U kunt MSAL Node installeren door de volgende npm-opdracht uit te voeren.

npm install @azure/msal-node --save

MSAL initialiseren

U kunt de verwijzing voor MSAL toevoegen door de volgende code toe te voegen:

const msal = require('@azure/msal-node');

Vervolgens initialiseert u MSAL met de volgende code:

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);
Hierin: Beschrijving
clientId Is de Toepassings-id (client-id) voor de toepassing die is geregistreerd in de Azure-portal. U vindt deze waarde op de pagina Overzicht in de Azure-portal.
authority Het STS-eindpunt voor de gebruiker voor verificatie. Dat is meestal https://login.microsoftonline.com/{tenant} voor de openbare cloud, waarbij {tenant} de naam van uw tenant of uw tenant-id is.
clientSecret Het clientgeheim is dat voor de toepassing in Azure-portal wordt gemaakt.

Zie de naslagdocumentatie voor ConfidentialClientApplication voor meer informatie

Tokens aanvragen

Als u een token wilt aanvragen met behulp van de identiteit van de app, gebruikt u de acquireTokenByClientCredential-methode:

const tokenRequest = {
    scopes: [ 'https://graph.microsoft.com/.default' ],
};

const tokenResponse = await cca.acquireTokenByClientCredential(tokenRequest);
Hierin: Beschrijving
tokenRequest De aangevraagde bereiken bevat. Voor vertrouwelijke clients moet hiervoor de indeling worden gebruikt die vergelijkbaar is met {Application ID URI}/.default om aan te geven dat de aangevraagde bereiken dezelfde zijn die statisch zijn gedefinieerd in het app-object dat is ingesteld in de Azure-portal (voor Microsoft Graph verwijst {Application ID URI} naar https://graph.microsoft.com). Voor aangepaste web-API's wordt {Application ID URI} gedefinieerd in de sectie Een API beschikbaar maken in de registratie van toepassingen van de Azure-portal.
tokenResponse Het antwoord bevat een toegangstoken voor de aangevraagde bereiken.

Help en ondersteuning

Als u hulp nodig hebt, een probleem wilt melden of meer informatie wilt over uw ondersteuningsopties, raadpleegt u Hulp en ondersteuning voor ontwikkelaars.

Volgende stappen

Zie voor meer informatie over de ontwikkeling van daemon-/consoletoepassingen met MSAL Node de zelfstudie: