在 Azure 外部執行的應用程式(例如內部部署或第三方資料中心)應該使用應用程式服務主體在存取 Azure 資源時向 Azure 進行驗證。 系統會在 Azure 中使用應用程式註冊程序來建立應用程式服務主體物件。 建立應用程式服務主體時,會產生應用程式的用戶端標識碼和客戶端密碼。 您會將用戶端識別碼、用戶端密碼和租使用者標識符儲存在環境變數中,讓適用於 JavaScript 的 Azure SDK 在運行時間使用環境變數向 Azure 驗證您的應用程式。
應該為每個環境建立不同的應用程式註冊(例如測試、階段、生產環境),應用程式正在執行。 這可讓每個服務主體設定環境特定的資源許可權,並確定部署到某個環境的應用程式不會與屬於另一個環境一部分的 Azure 資源交談。
1:在 Azure 中註冊應用程式
您可以使用 Azure 入口網站或 Azure CLI 向 Azure 註冊應用程式。
登入 Azure 入口網站並遵循下列步驟。
2:將角色指派給應用程式服務主體
接著,您必須決定應用程式針對哪些資源需要哪些角色 (權限),並將這些角色指派給應用程式。 角色可在資源、資源群組或訂閱範圍內獲派其他角色。 此範例會顯示如何在資源群組範圍內為服務主體指派角色,因為多數應用程式都會將所有 Azure 資源劃分在單一資源群組中。
3:設定應用程式的環境變數
您必須為執行 JavaScript 應用程式的進程設定 AZURE_CLIENT_ID、 AZURE_TENANT_ID和 AZURE_CLIENT_SECRET 環境變數,讓應用程式服務主體認證可在運行時間使用。 對象 DefaultAzureCredential 會尋找這些環境變數中的服務主體資訊。
AZURE_CLIENT_ID=<value>
AZURE_TENANT_ID=<value>
AZURE_CLIENT_SECRET=<value>
4:在應用程式中實作 DefaultAzureCredential
若要向 Azure 驗證 Azure SDK 用戶端物件,您的應用程式應該使用DefaultAzureCredential來自@azure/身分識別套件的 類別。
首先,將 @azure/身分 識別套件新增至您的應用程式。
npm install @azure/identity
接下來,針對在應用程式中建立 Azure SDK 用戶端物件的任何 JavaScript 程式代碼,您會想要:
- 從模組匯入
DefaultAzureCredential@azure/identity類別。 - 建立
DefaultAzureCredential物件。 - 將
DefaultAzureCredential對象傳遞至 Azure SDK 用戶端物件建構函式。
下列程式碼區段示範其中一種範例。
// connect-with-default-azure-credential.js
import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
import 'dotenv/config'
const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
if (!accountName) throw Error('Azure Storage accountName not found');
const blobServiceClient = new BlobServiceClient(
`https://${accountName}.blob.core.windows.net`,
new DefaultAzureCredential()
);
當上述程式代碼具現化 DefaultAzureCredential 物件時, DefaultAzureCredential 讀取環境變數 AZURE_SUBSCRIPTION_ID、 AZURE_TENANT_ID、 AZURE_CLIENT_ID和 AZURE_CLIENT_SECRET ,讓應用程式服務主體資訊連線到 Azure。
![顯示如何使用 Azure 入口網站頂端搜尋列尋找並瀏覽至 [應用程式註冊] 分頁的螢幕擷取畫面。](../../../includes/media/sdk-auth-passwordless/on-premises-app-registration-azure-portal-1-240px.png)
![顯示 [應用程式註冊] 頁面上 [新增註冊] 按鈕位置的螢幕擷取畫面。](../../../includes/media/sdk-auth-passwordless/on-premises-app-registration-azure-portal-2-240px.png)
![為應用程式提供名稱,並將支援的帳戶類型指定為此組織目錄中的帳戶,以填入 [註冊] 的螢幕快照。](../../../includes/media/sdk-auth-passwordless/on-premises-app-registration-azure-portal-3-240px.png)





![資源群組頁面的螢幕擷取畫面,顯示 [存取控制 (IAM)] 功能表項目的位置。](../../../includes/media/sdk-auth-passwordless/assign-service-principal-to-role-azure-portal-2-240px.png)



![螢幕擷取畫面:顯示如何在 [選取成員] 對話方塊中為應用程式篩選並選取 Microsoft Entra 群組。](../../../includes/media/sdk-auth-passwordless/assign-service-principal-to-role-azure-portal-6-240px.png)
![螢幕擷取畫面:顯示已完成的 [新增角色指派] 頁面,以及用來完成流程的 [檢閱 + 指派] 按鈕位置。](../../../includes/media/sdk-auth-passwordless/assign-service-principal-to-role-azure-portal-7-240px.png)