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.
Credencial do Azure padrão
DefaultAzureCredential
é apropriada para a maioria dos cenários em que o aplicativo é executado, em última instância, 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 por meio dos seguintes mecanismos, nesta ordem:
- Ambiente:
DefaultAzureCredential
lê as informações da conta especificadas por meio das variáveis de ambiente e a usa para autenticar. - Identidade gerenciada: se o aplicativo for implantado em um host do Azure com identidade gerenciada habilitada,
DefaultAzureCredential
autentica com essa conta. - IntelliJ: se você tiver autenticado usando o Azure Toolkit for IntelliJ,
DefaultAzureCredential
autentica com essa conta. - Visual Studio Code: se você tiver autenticado usando o plug-in de conta do Azure do Visual Studio Code,
DefaultAzureCredential
autentica com essa conta. - CLI do Azure: se você tiver autenticado uma conta por meio do comando
az login
da CLI 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.
- 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. - Configurar
.managedIdentityClientId(String)
no criador ou na variável de ambienteAZURE_CLIENT_ID
configuraDefaultAzureCredential
para autenticação como uma identidade gerenciada definida pelo usuário, enquanto deixá-la vazia a configura para ser autenticada como uma identidade gerenciada atribuída pelo sistema. - A configuração de
.tenantId(String)
no construtor ou na variável de ambienteAZURE_TENANT_ID
configuraDefaultAzureCredential
para autenticação em um locatário específico para o cache de token compartilhado, Visual Studio Code e a 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. - A configuração de
.intelliJKeePassDatabasePath(String)
no construtor configuraDefaultAzureCredential
para ler um arquivo KeePass específico ao realizar a autenticação com as credenciais do IntelliJ.
Autenticar com DefaultAzureCredential
O exemplo a seguir demonstra como autenticar SecretClient
da 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://<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 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.
/**
* 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 de SecretClient
da biblioteca de clientes azure-security-keyvault-secrets usando DefaultAzureCredential
em uma estação de trabalho em que o IDEA do IntelliJ está instalado e o usuário entrou com uma conta do Azure para o Azure Toolkit for 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 dá suporte à Identidade Gerenciada por meio de pontos de extremidade IDENTITY/MSI
, IMDS
ou ambos, então essa credencial faz com que seu aplicativo seja autenticado e oferece uma excelente 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 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.