Autenticar aplicativos Java hospedados no Azure
Este artigo examina como a biblioteca de Identidades do Azure dá suporte à autenticação de token do Microsoft Entra para aplicativos hospedados no Azure. Esse suporte é possível por meio de um conjunto de implementações, que são discutidas TokenCredential
neste artigo.
Este artigo aborda 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.
Credencial do Azure padrão
DefaultAzureCredential
é apropriado para a maioria dos cenários em que o aplicativo é executado na Nuvem do Azure. A DefaultAzureCredential
combina as credenciais comumente usadas para autenticação quando implantadas com credenciais usadas para autenticar em um ambiente de desenvolvimento. DefaultAzureCredential
tenta autenticar através dos seguintes mecanismos em ordem:
- Ambiente -
DefaultAzureCredential
lê as informações da conta especificadas por meio de variáveis de ambiente e as usa para autenticar. - Identidade Gerenciada - Se o aplicativo for implantado em um host do Azure com a Identidade Gerenciada habilitada,
DefaultAzureCredential
autenticará com essa conta. - IntelliJ - Se você tiver se autenticado por meio do Kit de Ferramentas do Azure para IntelliJ,
DefaultAzureCredential
autenticará com essa conta. - Visual Studio Code - Se você tiver autenticado por meio do plug-in da Conta do Azure do Visual Studio Code,
DefaultAzureCredential
autenticará com essa conta. - CLI do Azure - Se você autenticou uma conta por meio do comando da CLI
az login
do Azure,DefaultAzureCredential
autentica com essa conta.
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.
- A definição das variáveis
AZURE_CLIENT_ID
de ambiente ,AZURE_CLIENT_SECRET
eAZURE_TENANT_ID
conforme definido em Variáveis de ambiente configura para autenticar como a entidade deDefaultAzureCredential
serviço especificada pelos valores. - A configuração
.managedIdentityClientId(String)
no construtor ou na variávelAZURE_CLIENT_ID
deDefaultAzureCredential
ambiente configura para autenticar como uma identidade gerenciada definida 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ávelAZURE_TENANT_ID
de ambiente configura para autenticar em um locatário específico para cache deDefaultAzureCredential
token compartilhado, Visual Studio Code e IntelliJ IDEA. - A configuração da variável
AZURE_USERNAME
de ambiente configuraDefaultAzureCredential
para escolher o token armazenado em cache correspondente do cache de token compartilhado. - A configuração
.intelliJKeePassDatabasePath(String)
no construtor configuraDefaultAzureCredential
para ler um arquivo KeePass específico ao autenticar com credenciais IntelliJ.
Autenticar com DefaultAzureCredential
O exemplo a seguir demonstra a autenticação da SecretClient
biblioteca de cliente azure-security-keyvault-secrets usando DefaultAzureCredential
o .
// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
.vaultUrl("https://<your Key Vault name>.vault.azure.net")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
Autenticar uma identidade gerenciada atribuída ao usuário com a 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.
/**
* The default credential uses the user-assigned managed identity with the specified client ID.
*/
DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder()
.managedIdentityClientId("<managed identity client ID>")
.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(defaultCredential)
.buildClient();
Autenticar um usuário no Azure Toolkit for IntelliJ com a DefaultAzureCredential
O exemplo a seguir demonstra a autenticação da SecretClient
biblioteca de cliente azure-security-keyvault-secrets usando DefaultAzureCredential
o , em uma estação de trabalho onde o IntelliJ IDEA está instalado e o usuário entrou com uma conta do Azure no Kit de Ferramentas do Azure para IntelliJ.
Para saber mais sobre como configurar seu IntelliJ IDEA, confira Entrar no Azure Toolkit for IntelliJ para IntelliJCredential.
/**
* The default credential uses the KeePass database path to find the user account in IntelliJ on Windows.
*/
// KeePass configuration is required only for Windows. No configuration needed for Linux / Mac.
DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder()
.intelliJKeePassDatabasePath("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(defaultCredential)
.buildClient();
Credencial de identidade gerenciada
A Identidade Gerenciada 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 ofereça suporte à Identidade Gerenciada por meio IDENTITY/MSI
de , pontos de IMDS
extremidade ou ambos, essa credencial autenticará seu aplicativo e oferecerá uma ótima 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 autenticação do SecretClient
da biblioteca de clientes azure-security-keyvault-secrets usando a ManagedIdentityCredential
em uma máquina virtual, serviço de aplicativo, aplicativo de funções, Cloud Shell, Service Fabric, ARC ou ambiente AKS no Azure, com a identidade gerenciada atribuída pelo sistema ou atribuída pelo usuário habilitada.
/**
* Authenticate with a managed identity.
*/
ManagedIdentityCredential managedIdentityCredential = new ManagedIdentityCredentialBuilder()
.clientId("<user-assigned managed identity client ID>") // required only for user-assigned
.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(managedIdentityCredential)
.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). |
Nome de usuário e senha
Nome da variável | Valor |
---|---|
AZURE_CLIENT_ID |
ID de um aplicativo Microsoft Entra. |
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 aplicativo hospedado 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.