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
- Node.js
- Visual Studio Code nebo jiný editor kódu
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ě:
- Přihlaste se do Centra pro správu Microsoft Entra jako alespoň správce aplikací.
- Přejděte k aplikacím> identit>Registrace aplikací.
- Vyberte Nová registrace.
- 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. - Vyberte Zaregistrovat.
- V části Spravovat vyberte Certifikáty a tajné kódy.
- 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.
- V části Spravovat vyberte Oprávnění>rozhraní API Přidat oprávnění. Vyberte Microsoft Graph.
- Vyberte Oprávnění aplikace.
- 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
Krok 3: Konfigurace ukázkového projektu Node.js
Extrahujte soubor ZIP do místní složky blízko kořenového adresáře disku, například C:/Azure-Samples.
Upravte .env a nahraďte hodnoty polí
TENANT_ID
CLIENT_ID
aCLIENT_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í.
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/
- V případě koncového bodu Microsoft Entra nahraďte
Krok 4: Souhlas správce
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: