Autenticação do Azure em ambientes de desenvolvimento Java

Este artigo fornece uma visão geral do suporte da biblioteca de Identidades do Azure para autenticação de token do Microsoft Entra. Esse suporte habilita a autenticação para aplicativos executados localmente em computadores de desenvolvedor por meio de um conjunto de implementações de TokenCredential.

Este artigo aborda os seguintes assuntos:

Para solucionar problemas de autenticação do ambiente de desenvolvimento, consulte Solucionar problemas de autenticação do ambiente de desenvolvimento.

Credencial do código do dispositivo

A credencial do código do dispositivo autentica de modo interativo um usuário em dispositivos com interface do usuário limitada. Ele funciona solicitando que o usuário visite uma URL de entrada em uma máquina habilitada para navegador quando o aplicativo tentar autenticar. Em seguida, o usuário insere o código do dispositivo mencionado nas instruções junto com suas credenciais de entrada. Após a autenticação bem-sucedida, o aplicativo que solicitou a autenticação é autenticado com êxito no dispositivo em que está sendo executado.

Para obter mais informações, confira plataforma de identidade da Microsoft e o fluxo de concessão de autorização de dispositivo OAuth 2.0.

Habilitar aplicativos para o fluxo de código do dispositivo

Para autenticar um usuário por meio do fluxo de código de dispositivo, execute as seguintes etapas:

  1. Vá para Microsoft Entra ID no portal do Azure e encontre seu registro de aplicativo.
  2. Navegue até a seção Autenticação.
  3. Em URIs Redirecionados Sugeridos, verifique o URI que termina com /common/oauth2/nativeclient.
  4. Em Tipo de Cliente Padrão, selecione Sim para Tratar o aplicativo como um cliente público.

Essas etapas permitem que o aplicativo se autentique, mas ele ainda não tem permissão para entrar na ID do Microsoft Entra ou acessar recursos em seu nome. Para resolver esse problema, navegue até Permissões da API e habilite o Microsoft Graph e os recursos que você deseja acessar.

Você também deve ser o administrador do seu locatário para conceder consentimento ao seu aplicativo quando você entrar pela primeira vez.

Se você não conseguir configurar a opção de fluxo de código do dispositivo em sua ID do Microsoft Entra, talvez seja necessário que seu aplicativo seja multilocatário. Para tornar seu aplicativo multilocatário, navegue até o painel Autenticação e selecione Contas em qualquer diretório organizacional. Em seguida, selecione sim para Tratar aplicativo como Cliente Público.

Autenticar uma conta de usuário com o fluxo de código do dispositivo

O exemplo a seguir demonstra a autenticação do SecretClient da biblioteca de clientes azure-security-keyvault-secrets usando a DeviceCodeCredential em um dispositivo IoT.

DeviceCodeCredential deviceCodeCredential = new DeviceCodeCredentialBuilder()
  .challengeConsumer(challenge -> {
    // lets user know of the challenge
    System.out.println(challenge.getMessage());
  }).build();

// Azure SDK client builders accept the credential as a parameter
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(deviceCodeCredential)
  .buildClient();

Credencial interativa do navegador

Essa credencial autentica interativamente um usuário com o navegador do sistema padrão e proporciona uma experiência de autenticação tranquila, permitindo que você use as próprias credenciais para autenticar seu aplicativo.

Habilitar aplicativos para o fluxo do OAuth 2 do navegador interativo

Para usar InteractiveBrowserCredentialo , você precisa registrar um aplicativo no Microsoft Entra ID com permissões para entrar em nome de um usuário. Siga as etapas anteriores para o fluxo de código do dispositivo para registrar seu aplicativo. Como mencionado anteriormente, um administrador do seu locatário deve conceder consentimento ao seu aplicativo antes que qualquer conta de usuário possa entrar.

Você pode observar que, em InteractiveBrowserCredentialBuilder, uma URL de redirecionamento é necessária. Adicione a URL de redirecionamento à subseção Redirecionar URIs na seção Autenticação do aplicativo Microsoft Entra registrado.

Autenticar interativamente uma conta de usuário no navegador

O exemplo a seguir demonstra a autenticação do SecretClient da biblioteca de clientes azure-security-keyvault-secrets usando a InteractiveBrowserCredential.

InteractiveBrowserCredential interactiveBrowserCredential = new InteractiveBrowserCredentialBuilder()
  .clientId("<your client ID>")
  .redirectUrl("http://localhost:8765")
  .build();

// Azure SDK client builders accept the credential as a parameter
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(interactiveBrowserCredential)
  .buildClient();

Credencial da CLI do Azure

A credencial da CLI do Azure autentica em um ambiente de desenvolvimento com o usuário habilitado ou a entidade de serviço na CLI do Azure. Ele usa a CLI do Azure com um usuário que já está conectado a ela e usa a CLI para autenticar o aplicativo na ID do Microsoft Entra.

Entrar na CLI do Azure para AzureCliCredential

Entre como um usuário com o seguinte comando da CLI do Azure:

az login

Entre como uma entidade de serviço usando o seguinte comando:

az login \
    --service-principal \
    --username <client-ID> \
    --password <client-secret> \
    --tenant <tenant-ID>

Se a conta ou entidade de serviço tem acesso a vários locatários, verifique se o locatário ou a assinatura desejada está no estado "habilitado" na saída do seguinte comando:

az account list

Antes de usar AzureCliCredential no código, execute o comando a seguir para verificar se a conta foi configurada com êxito.

az account get-access-token

Talvez seja necessário repetir esse processo após um determinado período, dependendo da validade do token de atualização em sua organização. Em geral, o período de validade do token de atualização é de algumas semanas a alguns meses. AzureCliCredential solicita que você entre novamente.

Autenticar uma conta de usuário com a CLI do Azure

O exemplo a seguir demonstra a autenticação do SecretClient da biblioteca de cliente azure-security-keyvault-secrets usando a AzureCliCredential em uma estação de trabalho com a CLI do Azure instalada e conectada.

AzureCliCredential cliCredential = new AzureCliCredentialBuilder().build();

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(cliCredential)
  .buildClient();

Credencial do IntelliJ

A credencial IntelliJ autentica em um ambiente de desenvolvimento com a conta no Kit de Ferramentas do Azure para IntelliJ. Ele usa as informações do usuário conectado no IntelliJ IDE e as usa para autenticar o aplicativo no Microsoft Entra ID.

Entrar no Azure Toolkit for IntelliJ para IntelliJCredential

Use as seguintes etapas para entrar:

  1. Na janela do IntelliJ, abra Plug-ins de configurações > de arquivo>.
  2. Procure "Kit de Ferramentas do Azure para IntelliJ" no mercado. Instale e reinicie o IDE.
  3. Localizar o novo item de menu Ferramentas Azure Azure >> Sign In
  4. O Login do dispositivo ajuda você a entrar como uma conta de usuário. Siga as instruções para entrar no login.microsoftonline.com site com o código do dispositivo. O IntelliJ solicita que você selecione suas assinaturas. Selecione a assinatura com os recursos que você deseja acessar.

No Windows, você também precisa do caminho do banco de dados KeePass para ler as credenciais do IntelliJ. Você pode encontrar o caminho nas configurações do IntelliJ em Configurações de > arquivo>, Aparência e comportamento>, Configurações > do sistema, Senhas. Anote a localização do caminho do KeePassDatabase.

Autenticar uma conta de usuário com o IDEA do IntelliJ

O exemplo a seguir demonstra a autenticação do SecretClient da biblioteca de clientes azure-security-keyvault-secrets usando o IntelliJCredential em uma estação de trabalho em que o IDEA do IntelliJ está instalado e o usuário entrou com uma conta do Azure.

IntelliJCredential intelliJCredential = new IntelliJCredentialBuilder()
  // KeePass configuration isrequired only for Windows. No configuration needed for Linux / Mac.
  .keePassDatabasePath("C:\\Users\\user\\AppData\\Roaming\\JetBrains\\IdeaIC2020.1\\c.kdbx")
  .build();

// Azure SDK client builders accept the credential as a parameter
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(intelliJCredential)
  .buildClient();

Credencial do Visual Studio Code

A credencial do Visual Studio Code habilita a autenticação em ambientes de desenvolvimento em que o VS Code é instalado com a extensão da Conta do Azure do VS Code. Ele usa as informações do usuário conectado no VS Code IDE e as usa para autenticar o aplicativo no Microsoft Entra ID.

Entrar na extensão da conta do Azure do Visual Studio Code para VisualStudioCodeCredential

A integração Nn com a extensão de Conta do Azure manipula a autenticação do Visual Studio Code. Para usar essa forma de autenticação, instale a extensão de Conta do Azure e use a Paleta de Comandos de Exibição > para executar o comando Azure: Entrar. Esse comando abre uma janela do navegador e exibe uma página que permite que você entre no Azure. Depois de concluir o processo de entrada, você pode fechar o navegador conforme indicado. A execução do aplicativo (no depurador ou em qualquer lugar da máquina de desenvolvimento) usa a credencial do seu login.

Autenticar uma conta de usuário com o Visual Studio Code

O exemplo a seguir demonstra a autenticação do SecretClient da biblioteca de clientes azure-security-keyvault-secrets usando o VisualStudioCodeCredential em uma estação de trabalho em que o Visual Studio Code está instalado e o usuário entrou com uma conta do Azure.

VisualStudioCodeCredential visualStudioCodeCredential = new VisualStudioCodeCredentialBuilder().build();

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(visualStudioCodeCredential)
  .buildClient();

Próximas etapas

Este artigo abordou a autenticação durante o desenvolvimento usando as credenciais disponíveis no seu computador. Essa forma de autenticação é uma das várias maneiras de autenticar-se no SDK do Azure para Java. Os seguintes artigos descrevem outras maneiras de realizar a:

Se você tiver problemas relacionados à autenticação do ambiente de desenvolvimento, consulte Solucionar problemas de autenticação do ambiente de desenvolvimento.

Depois de ter feito a autenticação mestra, confira Configurar o registro em log no SDK do Azure para Java para obter informações sobre a funcionalidade de registro em log fornecida pelo SDK.