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
eAZURE_TENANT_ID
conforme definido em variáveis de ambiente configuraDefaultAzureCredential
para autenticação como a entidade de serviço especificada pelos valores. - A configuração
.managedIdentityClientId(String)
no construtor ou na variávelAZURE_CLIENT_ID
de ambiente configuraDefaultAzureCredential
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ávelAZURE_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
configuraDefaultAzureCredential
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/MSI
de 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:
- Autenticação do Azure em ambientes de desenvolvimento
- Autenticação com entidades de serviço
- Autenticação com credenciais do usuário
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.