分享方式:


快速入門:使用應用程式的身分識別取得權杖,並從 Node.js 主控台應用程式呼叫 Microsoft Graph API

歡迎! 這可能不是您預期的頁面。 當我們處理修正程式時,此連結應會將您導向至正確的文章:

快速入門:取得權杖,並從 Node.js 主控台應用程式呼叫 Microsoft Graph

當我們努力解決問題時,也對您的不便深感抱歉,並感謝您的耐心等候。

在本快速入門中,您會下載並執行程式碼範例,該範例會示範 Node.js 主控台應用程式如何使用應用程式的身分識別來取得存取權杖,以呼叫 Microsoft Graph API 及顯示目錄中的使用者清單。 此程式碼範例會示範自動作業或 Windows 服務如何使用應用程式識別來執行,而不是以使用者的身分識別執行。

本快速入門會使用適用於 Node.js 的 Microsoft 驗證程式庫 (MSAL Node)用戶端授與

必要條件

下載並設定範例應用程式

步驟 1:在 Azure 入口網站中設定應用程式

若要讓本快速入門中的程式碼範例能夠運作,您需要建立用戶端密碼,並新增 Graph API 的 User.Read.All 應用程式權限。

已設定 您的應用程式會使用這些屬性進行設定。

步驟 2:下載 Node.js 範例專案

注意

Enter_the_Supported_Account_Info_Here

如果您嘗試在此時執行應用程式,您將會收到「HTTP 403 - 禁止」錯誤:Insufficient privileges to complete the operation。 發生此錯誤的原因是任何 僅限應用程式的許可權 都需要 系統管理員同意:目錄的系統管理員必須同意您的應用程式。 請根據您的角色選取下列其中一個選項:

租用戶管理員

如果您是系統管理員,請移至 [API 許可權] 頁面,選取 [ 授與 > 系統管理員同意Enter_the_Tenant_Name_Here

標準使用者

如果您是租用戶的標準使用者,則至少需要要求雲端應用程式管理員授 與應用程式的管理員同意 。 若要這樣做,請提供下列 URL 給管理員:

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

步驟 4:執行應用程式

找出在命令提示字元或主控台中範例的根資料夾 (package.json 的所在位置)。 您必須安裝此範例的相依性一次:

npm install

然後,透過命令提示字元或主控台執行應用程式:

node . --op getUsers

您應該會在主控台輸出中看到一些 JSON 片段,代表您 Microsoft Entra 目錄中的使用者清單。

關於程式碼

以下將討論範例應用程式的一些重要層面。

MSAL 節點

MSAL 節點是程式庫,用來登入使用者並要求權杖,該權杖是用來存取受 Microsoft 身分識別平台保護的 API。 如前所述,本快速入門會使用應用程式權限 (應用程式本身的身分識別),而非委派的權限來要求權杖。 此案例所使用的驗證流程稱為 OAuth 2.0 用戶端認證流程。 如需有關如何搭配使用 MSAL 節點與精靈應用程式的詳細資訊,請參閱案例:精靈應用程式

您可以執行下列 npm 命令來安裝 MSAL 節點。

npm install @azure/msal-node --save

MSAL 初始化

您可以透過加入下列程式碼來新增 MSAL 的參考:

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

接著,使用下列程式碼將 MSAL 初始化:

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);
其中: 描述
clientId 是註冊於 Azure 入口網站中的應用程式所具備的應用程式 (用戶端) 識別碼。 您可以在 Azure 入口網站的應用程式 [概觀] 頁面中找到此值。
authority 供使用者用於驗證的 STS 端點。 若為公用雲端,通常是 https://login.microsoftonline.com/{tenant},其中 {tenant} 是租用戶的名稱或租用戶識別碼。
clientSecret 在 Azure 入口網站中為應用程式建立的用戶端密碼。

如需詳細資訊,請參閱下列項目的參考文件:ConfidentialClientApplication

要求權杖

若要使用應用程式的身分識別來要求權杖,請使用 acquireTokenByClientCredential 方法:

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

const tokenResponse = await cca.acquireTokenByClientCredential(tokenRequest);
其中: 描述
tokenRequest 包含所要求的範圍。 針對機密用戶端,這應該使用類似 {Application ID URI}/.default 的格式,以指出所要求的範圍是 Azure 入口網站中所設定應用程式物件中以靜態方式定義的範圍 (若為 Microsoft Graph,{Application ID URI} 會指向 https://graph.microsoft.com)。 若為自訂 Web API,在 Azure 入口網站「應用程式註冊」中的 [公開 API] 區段底下會定義 {Application ID URI}
tokenResponse 回應包含所要求之範圍的存取權杖。

說明與支援 

如果您需要協助、想要回報問題,或想要深入了解您的支援選項,請參閱 開發人員的協助與支援

下一步

若要深入了解如何使用 MSAL 節點進行精靈/主控台應用程式開發,請參閱教學課程: