Autenticar aplicativos Java hospedados no Azure

Este artigo analisa como a biblioteca de Identidade do Azure dá suporte à autenticação de token do Microsoft Entra para aplicativos hospedados no Azure. Este apoio é possível através de um conjunto de implementações, que são discutidas TokenCredential neste artigo.

Este artigo aborda os seguintes temas:

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

DefaultAzureCredential

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

Configurar DefaultAzureCredential

DefaultAzureCredential Suporta um conjunto de configurações através de setters nas variáveis de DefaultAzureCredentialBuilder ambiente OR.

  • Definir as variáveis AZURE_CLIENT_IDde ambiente , AZURE_CLIENT_SECRETe AZURE_TENANT_ID conforme definido em Variáveis de DefaultAzureCredential ambiente configura para autenticar 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 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 configura DefaultAzureCredential para autenticar em um locatário específico para o cache de token compartilhado ou IntelliJ IDEA.
  • A configuração da variável AZURE_USERNAME de ambiente configura DefaultAzureCredential para escolher o token em cache correspondente do cache de token compartilhado.

Autenticar com DefaultAzureCredential

O exemplo a seguir demonstra a autenticação da SecretClient biblioteca de cliente azure-security-keyvault-secrets usando DefaultAzureCredential:

// 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 da SecretClient 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 atribuída pelo usuário) de um recurso do Azure. Portanto, se o aplicativo estiver sendo executado dentro de um recurso do Azure que ofereça suporte à identidade gerenciada por meio de , IMDS pontos de IDENTITY/MSIextremidade ou ambos, essa credencial autenticará seu aplicativo e oferecerá uma experiência de autenticação sem segredo.

Para obter mais informações, veja O que são identidades geridas para os recursos do Azure?.

Autenticar no Azure com identidade gerenciada

O exemplo a seguir demonstra a autenticação da SecretClient biblioteca de cliente azure-security-keyvault-secrets usando o ManagedIdentityCredential ambiente em uma Máquina Virtual, Serviço de Aplicativo, Funções, Cloud Shell, Service Fabric, Arc ou AKS no Azure, com 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 DefaultAzureCredential e EnvironmentCredential com variáveis de ambiente. Cada tipo de autenticação requer valores para variáveis específicas:

Principal de serviço com segredo

Nome da variável Value
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 Value
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 chave privada (sem proteção por senha).
AZURE_CLIENT_CERTIFICATE_PASSWORD (facultativo) Senha do arquivo de certificado, se houver.
AZURE_CLIENT_SEND_CERTIFICATE_CHAIN (facultativo) Envie a cadeia de certificados no cabeçalho x5c para suportar o nome do assunto / autenticação baseada no emissor.

Nome de utilizador e palavra-passe

Nome da variável Value
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 e-mail).
AZURE_PASSWORD A senha associada para o nome de usuário fornecido.

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

Próximos passos

Este artigo abordou a autenticação para aplicativos hospedados no Azure. Essa forma de autenticação é uma das várias maneiras de autenticar no SDK do Azure para Java. Os artigos a seguir descrevem outras maneiras:

Se você tiver problemas relacionados à autenticação de aplicativo hospedado no Azure, consulte Solucionar problemas de autenticação de aplicativo hospedado no Azure.

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