Autenticar aplicativos .NET nos serviços do Azure durante o desenvolvimento local usando contas de desenvolvedor
Os desenvolvedores precisam depurar e testar aplicativos na nuvem em suas estações de trabalho locais. Quando um aplicativo é executado na estação de trabalho de um desenvolvedor durante o desenvolvimento local, ele ainda deve se autenticar em quaisquer serviços do Azure usados pelo aplicativo. Este artigo aborda como usar as credenciais do Azure de um desenvolvedor para autenticar o aplicativo no Azure durante o desenvolvimento local.
Para que um aplicativo se autentique no Azure durante o desenvolvimento local usando as credenciais do Azure do desenvolvedor, o desenvolvedor deve estar conectado ao Azure a partir de uma das seguintes ferramentas de desenvolvedor:
- Visual Studio
- CLI do Azure
- Azure Developer CLI
- Azure PowerShell
A biblioteca de Identidade do Azure pode detetar que o desenvolvedor está conectado a partir de uma dessas ferramentas. A biblioteca pode obter o token de acesso do Microsoft Entra por meio da ferramenta para autenticar o aplicativo no Azure como o usuário conectado.
Essa abordagem é mais fácil de configurar para uma equipe de desenvolvimento, pois aproveita as contas existentes do Azure dos desenvolvedores. No entanto, a conta de um desenvolvedor provavelmente tem mais permissões do que as exigidas pelo aplicativo, excedendo assim as permissões com as quais o aplicativo é executado em produção. Como alternativa, você pode criar entidades de serviço de aplicativo para usar durante o desenvolvimento local, que podem ter escopo para ter apenas o acesso necessário para o aplicativo.
1 - Criar grupo Microsoft Entra para desenvolvimento local
Como quase sempre há vários desenvolvedores que trabalham em um aplicativo, um grupo do Microsoft Entra é recomendado para encapsular as funções (permissões) de que o aplicativo precisa no desenvolvimento local. Esta abordagem oferece as seguintes vantagens:
- Todos os desenvolvedores têm a garantia de ter as mesmas funções atribuídas, uma vez que as funções são atribuídas no nível do grupo.
- Se uma nova função for necessária para o aplicativo, ela só precisará ser adicionada ao grupo do aplicativo.
- Se um novo desenvolvedor se juntar à equipe, ele obterá as permissões necessárias para trabalhar no aplicativo depois de ser adicionado ao grupo.
Se você tiver um grupo existente do Microsoft Entra para sua equipe de desenvolvimento, poderá usar esse grupo. Caso contrário, conclua as etapas a seguir para criar um grupo do Microsoft Entra.
Nota
Por padrão, a criação de grupos do Microsoft Entra é limitada a determinadas funções privilegiadas em um diretório. Se não conseguir criar um grupo, contacte um administrador do seu diretório. Se não conseguir adicionar membros a um grupo existente, contacte o proprietário do grupo ou um administrador de diretório. Para saber mais, consulte Gerenciar grupos do Microsoft Entra e associação a grupos.
2 - Atribuir funções ao grupo Microsoft Entra
Em seguida, determine quais funções (permissões) seu aplicativo precisa em quais recursos e atribua essas funções ao seu aplicativo. Neste exemplo, as funções são atribuídas ao grupo Microsoft Entra criado na etapa 1. Os grupos podem receber uma função em um recurso, grupo de recursos ou escopo de assinatura. Este exemplo mostra como atribuir funções no grupo de recursos, escopo, já que a maioria dos aplicativos agrupa todos os seus recursos do Azure em um único grupo de recursos.
3 - Entre no Azure usando ferramentas de desenvolvedor
Em seguida, entre no Azure usando uma das várias ferramentas de desenvolvedor. A conta que você autenticar também deve existir no grupo do Microsoft Entra que você criou e configurou anteriormente.
Navegue até Opções de ferramentas>para abrir a caixa de diálogo de opções.
Na caixa Opções de Pesquisa na parte superior, digite Azure para filtrar as opções disponíveis.
Em Autenticação de Serviço do Azure, escolha Seleção de Conta.
Selecione o menu suspenso em Escolha uma conta e escolha adicionar uma Conta da Microsoft. Uma janela é aberta, solicitando que você escolha uma conta. Insira as credenciais da sua conta do Azure desejada e selecione a confirmação.
Selecione OK para fechar a caixa de diálogo de opções.
4 - Implementar DefaultAzureCredential em seu aplicativo
DefaultAzureCredential é uma sequência opinativa e ordenada de mecanismos para autenticação no Microsoft Entra. Cada mecanismo de autenticação é uma classe derivada da classe TokenCredential e é conhecida como uma credencial. No tempo de execução, DefaultAzureCredential
tenta autenticar usando a primeira credencial. Se essa credencial não conseguir adquirir um token de acesso, a próxima credencial na sequência será tentada, e assim por diante, até que um token de acesso seja obtido com êxito. Dessa forma, seu aplicativo pode usar credenciais diferentes em ambientes diferentes sem escrever código específico do ambiente.
A ordem e os locais em que DefaultAzureCredential
procura credenciais são encontrados em DefaultAzureCredential.
Para usar DefaultAzureCredential
o , adicione o Azure.Identity e, opcionalmente, os pacotes Microsoft.Extensions.Azure ao seu aplicativo:
Em um terminal de sua escolha, navegue até o diretório do projeto de aplicativo e execute os seguintes comandos:
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Os serviços do Azure são acessados usando classes de cliente especializadas das várias bibliotecas de cliente do SDK do Azure. Essas classes e seus próprios serviços personalizados devem ser registrados para que possam ser acessados por meio de injeção de dependência em todo o aplicativo. No Program.cs
, conclua as seguintes etapas para registrar uma classe de cliente e DefaultAzureCredential
:
- Inclua os namespaces e
Microsoft.Extensions.Azure
porAzure.Identity
meiousing
de diretivas. - Registre o cliente de serviço do Azure usando o método de extensão -prefixed correspondente
Add
. - Passe uma instância de
DefaultAzureCredential
para oUseCredential
método.
Por exemplo:
using Microsoft.Extensions.Azure;
using Azure.Identity;
builder.Services.AddAzureClients(clientBuilder =>
{
clientBuilder.AddBlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"));
clientBuilder.UseCredential(new DefaultAzureCredential());
});
Uma alternativa é UseCredential
instanciar DefaultAzureCredential
diretamente:
using Azure.Identity;
builder.Services.AddSingleton<BlobServiceClient>(_ =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
Quando o código anterior é executado em sua estação de trabalho de desenvolvimento local, ele procura nas variáveis de ambiente uma entidade de serviço de aplicativo ou em ferramentas de desenvolvedor instaladas localmente, como o Visual Studio, para um conjunto de credenciais de desenvolvedor. Qualquer uma das abordagens pode ser usada para autenticar o aplicativo nos recursos do Azure durante o desenvolvimento local.
Quando implantado no Azure, esse mesmo código também pode autenticar seu aplicativo em outros recursos do Azure. DefaultAzureCredential
Pode recuperar configurações de ambiente e configurações de identidade gerenciada para autenticar em outros serviços automaticamente.