這篇文章會教你如何在 MSAL Node 中初始化物件 ConfidentialClientApplication 。 你將學會如何安全使用秘密和憑證,以及如何設定權限。
先決條件
在初始化應用程式之前,首先需要在 Microsoft Entra 系統管理中心 註冊它,建立應用程式與 Microsoft 身分識別平台 之間的信任關係。
註冊應用程式後,您需要在 Microsoft Entra 系統管理中心 中找到部分或全部以下數值。
| 價值 | 必要 | Description |
|---|---|---|
| 應用程式 (用戶端) 識別碼 | 必要 | 一個能在 Microsoft 身分識別平台 中唯一識別你的應用程式的 GUID。 |
| 權威 | Optional | 身份提供者的網址( 實例)以及你的應用程式的 登入受眾 。 執行個體與登入對象串接後,即構成 authority。 |
| 目錄(租戶)識別碼 | Optional | 如果您正在為僅供組織內部使用而建置企業營運應用程式(通常稱為 單一租用戶應用程式),請指定目錄(租用戶)ID。 |
| 重新導向 URI | Optional | 如果您正在建置 Web 應用程式,redirectUri 會指定身分識別提供者(Microsoft 身分識別平台)應將其所簽發的安全性權杖傳回到何處。 |
初始化 ConfidentialClientApplication 物件
要使用 MSAL Node,你需要實例化一個 ConfidentialClient 物件。
安全使用秘密與憑證
秘密絕不應該被硬編碼。 dotenv npm 套件可用來將秘密或憑證儲存在 .env 檔案(位於專案根目錄中),這些檔案應包含在 .gitignore 中,以防止秘密誤上傳。
憑證也可以透過 NodeJS 的 fs 模組從檔案讀取。 然而,這些資料絕不應儲存在專案目錄中。 生產應用程式應該從 Azure KeyVault 或其他安全金鑰庫取得憑證。
詳情請參閱 證書與秘密 。
請參閱 MSAL 範例: auth-code-with-certs
import * as msal from "@azure/msal-node";
import "dotenv/config"; // process.env now has the values defined in a .env file
const clientAssertionCallback = async (config) => {
// network request that uses config.clientId and (optionally) config.tokenEndpoint
const result = await Promise.resolve(
"network request which gets assertion"
);
return result;
};
const clientConfig = {
auth: {
clientId: "your_client_id",
authority: "your_authority",
clientSecret: process.env.clientSecret, // OR
clientCertificate: {
thumbprintSha256: process.env.thumbprint,
privateKey: process.env.privateKey,
}, // OR
clientAssertion: clientAssertionCallback, // or a predetermined clientAssertion string
},
};
const cca = new msal.ConfidentialClientApplication(clientConfig);
請參考匯 入憑證時的常見問題。
配置基礎
節點的設定選項具有common參數,而每個驗證流程各有specific參數。
-
clientId是初始化公用用戶端應用程式的必要條件 - 如果使用者在設定時未指定,
authority預設為https://login.microsoftonline.com/common/ - 機密客戶必須擁有客戶憑證。 客戶憑證可以是:
-
clientSecret是應用程式註冊時產生的秘密字串。 -
clientCertificate是應用程式註冊時設定的憑證。thumbprintSha256是憑證的 X.509 SHA-256 指紋,而privateKey是以 PEM 編碼的私密金鑰。x5c是用於主體名稱/簽發者驗證情境的選用 X.509 憑證鏈。 -
clientAssertion是一個包含斷言字串或回調函式的 ClientAssertion 物件,該函式回傳應用程式在請求標記時使用的斷言字串,以及斷言的類型(urn:ietf:params:oAuth:client-assertion-type:jwt-bearer)。 每當 MSAL 需要從代幣發行者取得代幣時,都會啟動回調。 應用程式開發者通常應該使用回調,因為斷言會過期,需要建立新的斷言。 App 開發者需負責宣告的生命週期。 利用 此機制 取得下游 API 的憑證,使用聯邦身份憑證(Federated Identity Credential)。
-
關於 更多配置 選項,請參考 MSAL 節點中的配置。
設定權威
預設情況下,MSAL 已設定為使用 common 租用戶,此租用戶適用於多租用戶應用程式,以及允許個人帳戶的應用程式(不含 B2C)。
authority: 'https://login.microsoftonline.com/common/'
如果您的應用程式受眾為單一租戶,您必須提供如下的租戶 ID 授權:
authority: 'https://login.microsoftonline.com/{your_tenant_id}'