Compartilhar via


Autenticar aplicativos Java hospedados no Azure

Este artigo analisa como a biblioteca de Identidade do Azure oferece suporte à autenticação de token do Microsoft Entra para aplicativos hospedados no Azure. Esse suporte é possibilitado por um conjunto de implementações de TokenCredential, que são discutidas nesse artigo.

Este artigo abrange os seguintes assuntos:

Para solucionar problemas de autenticação relacionados a aplicativos hospedados no Azure, consulte Solucionar problemas de autenticação de aplicativo hospedado no Azure.

DefaultAzureCredential

A DefaultAzureCredential combina as credenciais comumente usadas para autenticação quando implantadas com credenciais usadas para autenticar em um ambiente de desenvolvimento. Para obter mais informações, consulte Visão geral de DefaultAzureCredential.

Configurar a DefaultAzureCredential

A DefaultAzureCredential dá suporte a um conjunto de configurações por meio de setters no DefaultAzureCredentialBuilder ou nas variáveis de ambiente.

  • Definir as variáveis de ambiente AZURE_CLIENT_ID, AZURE_CLIENT_SECRET e AZURE_TENANT_ID conforme definido em variáveis de ambiente configura DefaultAzureCredential para autenticação como a entidade de serviço especificada pelos valores.
  • A configuração .managedIdentityClientId(String) no construtor ou na variável AZURE_CLIENT_ID de ambiente configura DefaultAzureCredential para autenticar como uma identidade gerenciada atribuída pelo usuário, enquanto deixá-los vazios configura-a para autenticar como uma identidade gerenciada atribuída pelo sistema.
  • A configuração .tenantId(String) no construtor ou na variável AZURE_TENANT_ID de ambiente é DefaultAzureCredential configurada para autenticar em um locatário específico para o cache de token compartilhado ou o IntelliJ IDEA.
  • A configuração da variável de ambiente AZURE_USERNAME configura DefaultAzureCredential para escolher o token armazenado em cache correspondente do cache de token compartilhado.

Autenticar com DefaultAzureCredential

O exemplo a seguir demonstra a SecretClient autenticação da biblioteca de clientes azure-security-keyvault-secrets usandoDefaultAzureCredential:

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<KEY_VAULT_NAME>.vault.azure.net")
  .credential(new DefaultAzureCredentialBuilder().build())
  .buildClient();

Autenticar uma identidade gerenciada atribuída pelo usuário com DefaultAzureCredential

O exemplo a seguir demonstra a autenticação de SecretClient da biblioteca de cliente azure-security-keyvault-secrets usando DefaultAzureCredential implantado em um recurso do Azure com uma identidade gerenciada atribuída pelo usuário configurada.

/**
 * DefaultAzureCredential uses the user-assigned managed identity with the specified client ID.
 */
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
  .managedIdentityClientId("<CLIENT_ID>")
  .build();

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

ManagedIdentityCredential

ManagedIdentityCredential autentica a identidade gerenciada (atribuída pelo sistema ou pelo usuário) de um recurso do Azure. Portanto, se o aplicativo estiver sendo executado dentro de um recurso do Azure que dá suporte à identidade gerenciada por meio IDENTITY/MSIde pontos IMDS de extremidade ou ambos, essa credencial autenticará seu aplicativo e oferecerá uma experiência de autenticação sem segredo.

Para obter mais informações, consulte O que são identidades gerenciadas para recursos do Azure?

Autenticar no Azure com identidade gerenciada

O exemplo a seguir demonstra a SecretClient autenticação da biblioteca de clientes azure-security-keyvault-secrets usando o em um ambiente de Máquina Virtual, Serviço de Aplicativo, aplicativo Functions, Cloud Shell, Service Fabric, Arc ou AKS no Azure, com a ManagedIdentityCredential identidade gerenciada atribuída pelo sistema ou pelo usuário habilitada.

/**
 * Authenticate with a user-assigned managed identity.
 */
ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder()
  .clientId("<CLIENT_ID>") // required only for user-assigned
  .build();

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

Variáveis de ambiente

Você pode configurar a DefaultAzureCredential e a EnvironmentCredential com variáveis de ambiente. Cada tipo de autenticação requer valores para variáveis específicas:

Entidade de serviço com segredo

Nome da variável Valor
AZURE_CLIENT_ID ID de um aplicativo Microsoft Entra.
AZURE_TENANT_ID ID do locatário do Microsoft Entra do aplicativo.
AZURE_CLIENT_SECRET Um dos segredos do cliente do aplicativo.

Entidade de serviço com certificado

Nome da variável Valor
AZURE_CLIENT_ID ID de um aplicativo Microsoft Entra.
AZURE_TENANT_ID ID do locatário do Microsoft Entra do aplicativo.
AZURE_CLIENT_CERTIFICATE_PATH Caminho para um arquivo de certificado codificado em PEM, incluindo a chave privada (sem proteção de senha).
AZURE_CLIENT_CERTIFICATE_PASSWORD (opcional) Senha do arquivo de certificado, se houver.
AZURE_CLIENT_SEND_CERTIFICATE_CHAIN (opcional) Envie a cadeia de certificados no cabeçalho x5c para dar suporte ao nome do assunto/autenticação baseada no emissor.

Nome de usuário e senha

Nome da variável Valor
AZURE_CLIENT_ID ID de um aplicativo Microsoft Entra.
AZURE_TENANT_ID ID do locatário do Microsoft Entra do aplicativo.
AZURE_USERNAME Um nome de usuário (geralmente um endereço de email).
AZURE_PASSWORD A senha associada para o nome de usuário fornecido.

A configuração é tentada nesta ordem. Por exemplo, se os valores para um segredo do cliente e um certificado estiverem presentes, o segredo do cliente será usado.

Próximas etapas

Este artigo abordou a autenticação para aplicativos hospedados no Azure. 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 de aplicativos hospedados no Azure, consulte Solucionar problemas de autenticação de aplicativo hospedado no Azure.

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.