使用 Microsoft Entra 識別碼驗證 Batch 管理解決方案

呼叫 Azure Batch 管理服務的應用程式會使用 Microsoft Entra ID,Microsoft 的多租戶雲端目錄與身份管理服務進行驗證。 Azure 本身使用 Microsoft Entra ID 來驗證其客戶、服務管理員及組織使用者。

建議的批次管理應用程式認證方法是使用 Azure Identity 客戶端函式庫,搭配 Azure。ResourceManager.Batch管理函式庫。 Azure Identity 函式庫提供基於憑證的憑證類別(例如 DefaultAzureCredential、ManagedIdentityCredential、ClientSecretCredential 和 InteractiveBrowserCredential),無論你的應用程式是在本地、Azure 或本地執行,都能穩定運作。 如需了解建議的驗證策略概觀,請參閱 使用 Azure Identity 程式庫向 Azure 服務驗證 .NET 應用程式。

Azure.ResourceManager.Batch 函式庫則揭露管理批次帳戶、帳戶金鑰、應用程式及應用程式套件的類型。 它是一個Azure資源提供者客戶端,與 Azure Resource Manager 合作,以程式化方式管理這些資源。 需要 Microsoft Entra ID 才能驗證透過任何 Azure 資源提供者用戶端(包括此程式庫)發出的要求。

Note

舊有的 Microsoft.Azure.Management.Batch 套件及基於 ADAL 的程式碼模式(AuthenticationContext.AcquireToken)已被棄用。 新程式碼應該使用 Azure.ResourceManager.Batch,憑證為 Azure.Identity。

若要深入了解如何使用 Batch Management .NET 程式庫,請參閱 使用適用於 .NET 的 Batch Management 用戶端程式庫管理 Batch 帳戶和配額。

註冊應用程式(可選)

是否需要註冊獨立的 Microsoft Entra 應用程式,取決於你使用的憑證類型:

  • 如果你使用 DefaultAzureCredential,並透過開發者工具(Azure CLI、Azure PowerShell、Visual Studio 或 Visual Studio Code)登入,或你的應用程式運行在有管理身份的Azure資源上,你就不需要註冊獨立的應用程式。 憑證使用該環境中已設定的身份。
  • 如果您的應用程式以服務主體身分進行驗證(例如使用 ClientSecretCredential 或 ClientCertificateCredential),您必須在 Microsoft Entra 租戶中註冊一個應用程式。

要註冊應用程式,請依照快速入門:以Microsoft 身分識別平台註冊應用程式。 註冊後,Microsoft Entra ID 會提供一個 application(client)ID,你可以在執行時使用。 如需詳細資訊,請參閱 Microsoft Entra ID 中的應用程式和服務主體物件。

指派 Azure RBAC 權限

在決定應用程式使用哪個身份(開發者帳號、管理身份或服務主體)後,將該身份分配到你管理批次帳號的資源群組或訂閱時所需的 Azure 角色基礎存取控制(RBAC)權限。 常見的內建角色包括Contributor、Azure Batch Account Contributor,以及 Reader。

相關步驟請參見 使用 Azure portal 指派 Azure 角色。

使用 Azure 身份函式庫進行認證

使用 Azure.Identity 與 Azure.ResourceManager.Batch 時,您不需要手動參考 Microsoft Entra 端點、資源 URI 或重新導向 URI——認證會自動處理權杖取得、快取與重新整理。

  1. 安裝所需的 NuGet 套件:

    dotnet add package Azure.Identity
    dotnet add package Azure.ResourceManager.Batch
    
  2. 請在你的程式碼中加入以下 using 語句:

    using Azure.Identity;
    using Azure.ResourceManager;
    using Azure.ResourceManager.Batch;
    
  3. 建立一個憑證並傳給 ArmClient。 使用用戶端來列舉或管理批次帳戶。

    推薦:DefaultAzureCredential — 在本地支援開發者工具登入(Azure CLI、Visual Studio、Visual Studio Code),當應用程式運行於 Azure 時,會自動使用管理身份:

    ArmClient arm = new ArmClient(new DefaultAzureCredential());
    
    SubscriptionResource subscription = await arm.GetDefaultSubscriptionAsync();
    await foreach (BatchAccountResource account in subscription.GetBatchAccountsAsync())
    {
        Console.WriteLine(account.Data.Name);
    }
    

    互動式(整合式)登入 — 提示使用者透過系統瀏覽器登入。 當你的應用程式必須互動式認證特定使用者時,請使用此方法:

    var credential = new InteractiveBrowserCredential(
        new InteractiveBrowserCredentialOptions
        {
            TenantId = "<tenant-id>",
            ClientId = "<application-id>",      // optional; required only if you registered your own app
            RedirectUri = new Uri("http://localhost")
        });
    
    ArmClient arm = new ArmClient(credential);
    

    服務主體(用戶端秘密) — 用於使用應用程式註冊秘密認證的無人值守應用程式:

    var credential = new ClientSecretCredential(
        tenantId: "<tenant-id>",
        clientId: "<application-id>",
        clientSecret: "<client-secret>");
    
    ArmClient arm = new ArmClient(credential);
    

    管理身份 — 當你的應用程式運行在擁有系統指派或使用者指派的管理身份的Azure資源(如虛擬機、應用服務或容器應用程式)上時,請使用:

    // System-assigned managed identity
    var credential = new ManagedIdentityCredential();
    
    // Or, user-assigned managed identity
    // var credential = new ManagedIdentityCredential(clientId: "<user-assigned-client-id>");
    
    ArmClient arm = new ArmClient(credential);
    

認證會以透明的方式快取並重新整理權杖,因此您可以在應用程式的整個生命週期中讓 ArmClient 與 Batch 管理資源保持運作。

下一步