Autenticar soluções de Gestão de Batch com Microsoft Entra ID

As aplicações que chamam o serviço Azure Batch Management autenticam-se com Microsoft Entra ID, o diretório multitenant baseado na cloud e o serviço de gestão de identidade da Microsoft. O próprio Azure utiliza o Microsoft Entra ID para autenticar os seus clientes, administradores de serviços e utilizadores organizacionais.

A forma recomendada de autenticar aplicações de gestão em lotes é usar a biblioteca cliente Azure Identity, juntamente com a Azure. ResourceManager.Batch biblioteca de gestão. A biblioteca Azure Identity fornece classes de credenciais baseadas em tokens (como DefaultAzureCredential, ManagedIdentityCredential, ClientSecretCredential e InteractiveBrowserCredential) que funcionam de forma consistente, quer a sua aplicação corra localmente, em Azure ou no local. Para uma visão geral das estratégias de autenticação recomendadas, consulte Autenticar aplicações de .NET para Azure serviços usando a biblioteca Azure Identity.

A biblioteca Azure.ResourceManager.Batch expõe tipos para gerir contas Batch, chaves de conta, aplicações e pacotes de aplicações. É um cliente fornecedor de recursos Azure e trabalha em conjunto com Azure Resource Manager para gerir estes recursos programaticamente. O Microsoft Entra ID é obrigatório para autenticar pedidos feitos através de qualquer cliente fornecedor de recursos do Azure, incluindo esta biblioteca.

Note

O pacote legado Microsoft.Azure.Management.Batch e os padrões de código baseados em ADAL (AuthenticationContext.AcquireToken) estão obsoletos. O novo código deve usar Azure.ResourceManager.Batch com credenciais Azure.Identity.

Para saber mais sobre como utilizar a biblioteca .NET de Gestão de Lotes, consulte Gerir contas e quotas do Batch com a biblioteca de cliente de Gestão de Lotes para .NET.

Registar uma candidatura (opcional)

Se precisa de registar uma aplicação Microsoft Entra separada depende do tipo de credencial que utiliza:

  • Se usar DefaultAzureCredential e iniciar sessão através de uma ferramenta de programador (CLI do Azure, Azure PowerShell, Visual Studio ou Visual Studio Code), ou se a sua aplicação correr num recurso Azure com identidade gerida, não precisa de registar uma aplicação separada. A credencial utiliza a identidade já configurada nesse ambiente.
  • Se a sua aplicação se autenticar como principal de serviço (por exemplo, com ClientSecretCredential ou ClientCertificateCredential), tem de registar uma aplicação no seu tenant do Microsoft Entra.

Para registar uma candidatura, siga os passos em Quickstart: Registe uma candidatura com a plataforma de identidades da Microsoft. Após o registo, o Microsoft Entra ID atribui um ID da aplicação (cliente) que utilizará em tempo de execução. Para obter mais informações, consulte Objetos principais de aplicativo e serviço no Microsoft Entra ID.

Atribuir permissões Azure RBAC

Depois de decidir qual a identidade que a sua aplicação usa (uma conta de programador, uma identidade gerida ou um principal de serviço), atribua a essa identidade as permissões de controlo de acesso baseado em papéis (RBAC) do Azure que necessita para o grupo de recursos ou subscrição onde gere as contas Batch. Funções integradas comuns incluem Contributor, Contribuidor da Conta do Azure Batch e Leitor.

Para os passos, consulte Atribuir Azure funções usando o portal Azure.

Autenticar com a biblioteca Azure Identity

Com Azure.Identity e Azure.ResourceManager.Batch, não precisa de indicar manualmente os pontos finais do Microsoft Entra, os URIs de recursos ou os URIs de redirecionamento — a credencial trata automaticamente da aquisição, do armazenamento em cache e da atualização dos tokens.

  1. Instale os pacotes NuGet necessários:

    dotnet add package Azure.Identity
    dotnet add package Azure.ResourceManager.Batch
    
  2. Adicione as seguintes using instruções ao seu código:

    using Azure.Identity;
    using Azure.ResourceManager;
    using Azure.ResourceManager.Batch;
    
  3. Crie uma credencial e transmita-a para ArmClient. Use o cliente para enumerar ou gerir contas em lote.

    Recomendado: DefaultAzureCredential — funciona localmente com os logins de ferramentas de programador (CLI do Azure, Visual Studio, Visual Studio Code) e usa identidade gerida automaticamente quando a aplicação corre em Azure:

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

    Início de sessão interativo (integrado) — pede ao utilizador que inicie sessão através do navegador do sistema. Use isto quando a sua aplicação tiver de autenticar um utilizador específico de forma interativa:

    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);
    

    Principal de serviço (cliente secreto) — utilização para aplicações não acompanhadas que autenticam com um segredo de registo de aplicações:

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

    Identidade gerida — use quando a sua aplicação corre num recurso Azure (como uma VM, App Service ou Container App) que tenha uma identidade gerida atribuída pelo sistema ou pelo utilizador:

    // 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);
    

A credencial armazena e atualiza os tokens de forma transparente, para que possa manter ArmClient ativos os recursos de gestão de lotes durante toda a vida útil da sua aplicação.

Passos seguintes