Rychlý start: Získání tokenu a volání Microsoft Graphu z konzolové aplikace Node.js

V tomto rychlém startu stáhnete a spustíte ukázku kódu, která předvádí, jak konzolová aplikace Node.js může získat přístupový token pomocí identity aplikace k volání rozhraní Microsoft Graph API a zobrazení seznamu uživatelů v adresáři. Ukázka kódu ukazuje, jak může bezobslužná úloha nebo služba Systému Windows běžet s identitou aplikace místo identity uživatele.

Tento rychlý start používá knihovnu Microsoft Authentication Library pro Node.js (uzel MSAL) s udělením přihlašovacích údajů klienta.

Požadavky

Registrace a stažení ukázkové aplikace

Začněte podle následujících kroků.

Krok 1: Registrace aplikace

Tip

Postup v tomto článku se může mírně lišit v závislosti na portálu, od který začínáte.

Pokud chcete zaregistrovat aplikaci a ručně přidat informace o registraci aplikace ke svému řešení, postupujte následovně:

  1. Přihlaste se do Centra pro správu Microsoft Entra jako alespoň správce aplikací.
  2. Přejděte k aplikacím> identit>Registrace aplikací.
  3. Vyberte Nová registrace.
  4. Zadejte název aplikace, například msal-node-cli. Uživatelé vaší aplikace můžou vidět tento název a později ho můžete změnit.
  5. Vyberte Zaregistrovat.
  6. V části Spravovat vyberte Certifikáty a tajné kódy.
  7. V části Tajné kódy klienta vyberte Nový tajný klíč klienta, zadejte název a pak vyberte Přidat. Poznamenejte si hodnotu tajného kódu v bezpečném umístění pro použití v pozdějším kroku.
  8. V části Spravovat vyberte Oprávnění>rozhraní API Přidat oprávnění. Vyberte Microsoft Graph.
  9. Vyberte Oprávnění aplikace.
  10. V části Uzel uživatele vyberte User.Read.All a pak vyberte Přidat oprávnění.

Krok 2: Stažení ukázkového projektu Node.js

Stažení ukázky kódu

Krok 3: Konfigurace ukázkového projektu Node.js

  1. Extrahujte soubor ZIP do místní složky blízko kořenového adresáře disku, například C:/Azure-Samples.

  2. Upravte .env a nahraďte hodnoty polí TENANT_IDCLIENT_IDa CLIENT_SECRET následujícím fragmentem kódu:

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

    Kde:

    • Enter_the_Application_Id_Here – je ID aplikace (klienta) aplikace, kterou jste zaregistrovali dříve. Toto ID najdete v přehledu registrace aplikace.
    • Enter_the_Tenant_Id_Here– tuto hodnotu nahraďte ID tenanta nebo názvem tenanta (například contoso.microsoft.com). Tyto hodnoty najdete v přehledu registrace aplikace.
    • Enter_the_Client_Secret_Here – tuto hodnotu nahraďte tajným kódem klienta, který jste vytvořili dříve. K vygenerování nového klíče použijte certifikáty a tajné kódy v nastavení registrace aplikace.

    Použití tajného kódu prostého textu ve zdrojovém kódu představuje zvýšené bezpečnostní riziko pro vaši aplikaci. I když ukázka v tomto rychlém startu používá tajný klíč klienta ve formátu prostého textu, je to jen kvůli jednoduchosti. V důvěrných klientských aplikacích doporučujeme místo tajných klíčů klienta používat přihlašovací údaje certifikátu, zejména ty aplikace, které chcete nasadit do produkčního prostředí.

  3. Upravte .env a nahraďte koncové body Microsoft Entra ID a Microsoft Graphu následujícími hodnotami:

    • V případě koncového bodu Microsoft Entra nahraďte Enter_the_Cloud_Instance_Id_Here .https://login.microsoftonline.com
    • V případě koncového bodu Microsoft Graphu nahraďte Enter_the_Graph_Endpoint_Here .https://graph.microsoft.com/

Pokud se v tomto okamžiku pokusíte spustit aplikaci, zobrazí se chyba HTTP 403 – Zakázáno : Insufficient privileges to complete the operation. K této chybě dochází, protože jakékoli oprávnění jen pro aplikaci vyžaduje souhlas správce: Někdo, kdo má přiřazenou alespoň roli Správce aplikace, musí udělit souhlas s vaší aplikací. V závislosti na vaší roli vyberte jednu z následujících možností:

Správci

Pokud máte přiřazenou alespoň roli správce aplikace, přejděte na stránku Oprávnění rozhraní API na portálu Registrace aplikace na webu Azure Portal a vyberte Udělit souhlas správce pro {Název tenanta} (kde {Název tenanta} je název vašeho adresáře).

Standardní uživatelé

Pokud jste standardním uživatelem vašeho tenanta, musíte požádat správce cloudových aplikací o udělení souhlasu správce pro vaši aplikaci. Chcete-li to provést, dejte správci následující adresu URL:

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

Kde:

  • Enter_the_Tenant_Id_Here– tuto hodnotu nahraďte ID tenanta nebo názvem tenanta (například contoso.microsoft.com).
  • Hodnota Enter_the_Application_Id_Here je ID aplikace (klienta), kterou jste zaregistrovali.

Krok 5: Spuštění aplikace

V příkazovém řádku nebo konzole vyhledejte kořenovou složku ukázky (kde package.json se nachází). Před prvním spuštěním budete muset nainstalovat závislosti, které vaše ukázková aplikace vyžaduje:

npm install

Pak aplikaci spusťte přes příkazový řádek nebo konzolu:

node . --op getUsers

Na výstupu konzoly byste měli vidět nějaký fragment JSON představující seznam uživatelů v adresáři Microsoft Entra.

O kódu

Níže jsou popsány některé důležité aspekty ukázkové aplikace.

Uzel MSAL

Uzel MSAL je knihovna používaná k přihlášení uživatelů a vyžádání tokenů používaných pro přístup k rozhraní API chráněnému platformou Microsoft Identity Platform. Jak je popsáno, tento rychlý start vyžaduje tokeny podle oprávnění aplikace (pomocí vlastní identity aplikace) místo delegovaných oprávnění. Tok ověřování použitý v tomto případě se označuje jako tok přihlašovacích údajů klienta OAuth 2.0. Další informace o používání uzlu MSAL s aplikacemi démona najdete v tématu Scénář: Aplikace démona.

Uzel MSAL můžete nainstalovat spuštěním následujícího příkazu npm.

npm install @azure/msal-node --save

Inicializace knihovny MSAL

Odkaz na knihovnu MSAL můžete přidat tak, že přidáte následující kód:

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

Potom inicializujte knihovnu MSAL pomocí následujícího kódu:

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);
Kde: Popis
clientId Je ID aplikace (klienta), kterou jste zaregistrovali na webu Azure Portal. Tuto hodnotu najdete na stránce Přehled aplikace na webu Azure Portal.
authority Koncový bod služby tokenů zabezpečení pro uživatele k ověření, Obvykle https://login.microsoftonline.com/{tenant} pro veřejný cloud, kde {tenant} je název vašeho tenanta nebo ID tenanta.
clientSecret Je tajný klíč klienta vytvořený pro aplikaci na webu Azure Portal.

Další informace najdete v referenční dokumentaci pro ConfidentialClientApplication

Žádosti o tokeny

Pokud chcete požádat o token pomocí identity aplikace, použijte acquireTokenByClientCredential metodu:

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

const tokenResponse = await cca.acquireTokenByClientCredential(tokenRequest);
Kde: Popis
tokenRequest Obsahuje požadované obory. U důvěrných klientů by to mělo být ve formátu podobném {Application ID URI}/.default označení, že požadované obory jsou ty, které jsou staticky definované v objektu aplikace nastaveném na webu Azure Portal (pro Microsoft Graph {Application ID URI} , odkazuje na https://graph.microsoft.com). Pro vlastní webová rozhraní API {Application ID URI} je definována v části Vystavení rozhraní API v registraci aplikace na webu Azure Portal.
tokenResponse Odpověď obsahuje přístupový token pro požadované obory.

Nápověda a podpora

Pokud potřebujete pomoc, chcete nahlásit problém nebo se chcete dozvědět o možnostech podpory, přečtěte si nápovědu a podporu pro vývojáře.

Další kroky

Další informace o vývoji démonů nebo konzolových aplikací pomocí MSAL Node najdete v tomto kurzu: