Autenticación de aplicaciones de Java hospedadas en Azure
En este artículo se describe cómo admite la biblioteca Azure Identity la autenticación de tokens de Microsoft Entra para las aplicaciones hospedadas en Azure. Esta compatibilidad es posible mediante un conjunto de implementaciones de TokenCredential
que se describen en este artículo.
En este artículo se tratan los siguientes asuntos:
Para solucionar problemas de autenticación relacionados con las aplicaciones hospedadas en Azure, consulte Solución de problemas de autenticación de aplicaciones hospedadas en Azure.
DefaultAzureCredential
DefaultAzureCredential
combina las credenciales que se usan normalmente para autenticarse cuando se implementa con las credenciales que se usan para autenticarse en un entorno de desarrollo. Para obtener más información, consulte Información general sobre DefaultAzureCredential.
Configuración de DefaultAzureCredential
DefaultAzureCredential
admite un conjunto de configuraciones mediante establecedores en el elemento DefaultAzureCredentialBuilder
o en variables de entorno.
- La configuración de las variables de entorno
AZURE_CLIENT_ID
,AZURE_CLIENT_SECRET
yAZURE_TENANT_ID
tal y como se define en Variables de entorno configuraDefaultAzureCredential
para autenticarse como la entidad de servicio especificada por los valores. - Si se establece
.managedIdentityClientId(String)
en el generador o la variableAZURE_CLIENT_ID
de entorno, se configuraDefaultAzureCredential
para autenticarse como una identidad administrada asignada por el usuario, al dejarlas vacías, se configura para autenticarse como una identidad administrada asignada por el sistema. - Si se establece
.tenantId(String)
en el generador o la variableAZURE_TENANT_ID
de entorno, se configuraDefaultAzureCredential
para autenticarse en un inquilino específico para la caché de tokens compartidos o IntelliJ IDEA. - Al establecer la variable de entorno
AZURE_USERNAME
configuraDefaultAzureCredential
para seleccionar el token almacenado en caché correspondiente de la caché de tokens compartidos.
Autenticación con DefaultAzureCredential
En el ejemplo siguiente se muestra cómo autenticar SecretClient
desde la biblioteca cliente azure-security-keyvault-secrets mediante 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();
Autenticación de una identidad administrada asignada por el usuario con DefaultAzureCredential
En el ejemplo siguiente se muestra la autenticación de SecretClient
de la biblioteca cliente azure-security-keyvault-secrets mediante DefaultAzureCredential
implementada en un recurso de Azure con una identidad administrada asignada por el usuario 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 la identidad administrada (asignada por el sistema o asignada por el usuario) de un recurso de Azure. Por lo tanto, si la aplicación se ejecuta dentro de un recurso de Azure que admite la identidad administrada a través IDENTITY/MSI
de , IMDS
puntos de conexión o ambos, esta credencial obtiene la aplicación autenticada y ofrece una experiencia de autenticación sin secretos.
Para más información, consulte ¿Qué es identidades administradas para recursos de Azure?
Autenticación en Azure con identidad administrada
En el ejemplo siguiente se muestra cómo autenticar desde SecretClient
la biblioteca cliente azure-security-keyvault-secrets mediante en una máquina virtual, App Service, la aplicación Functions, Cloud Shell, Service Fabric, Arc o el entorno de AKS en Azure, con la identidad administrada asignada por el ManagedIdentityCredential
sistema o asignada por el usuario 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();
Variables de entorno
Puede configurar DefaultAzureCredential
y EnvironmentCredential
con variables de entorno. Cada tipo de autenticación requiere valores para variables específicas:
Entidad de servicio con secreto
Nombre de la variable | Valor |
---|---|
AZURE_CLIENT_ID |
ID de una aplicación de Microsoft Entra. |
AZURE_TENANT_ID |
ID del inquilino de Microsoft Entra de la aplicación. |
AZURE_CLIENT_SECRET |
Uno de los secretos de cliente de la aplicación. |
Entidad de servicio con certificado
Nombre de la variable | Valor |
---|---|
AZURE_CLIENT_ID |
ID de una aplicación de Microsoft Entra. |
AZURE_TENANT_ID |
ID del inquilino de Microsoft Entra de la aplicación. |
AZURE_CLIENT_CERTIFICATE_PATH |
Ruta de acceso a un archivo de certificado codificado con PEM que incluye la clave privada (sin protección por contraseña). |
AZURE_CLIENT_CERTIFICATE_PASSWORD |
(opcional) Contraseña del archivo de certificado, si existe. |
AZURE_CLIENT_SEND_CERTIFICATE_CHAIN |
(opcional) Envíe la cadena de certificados en el encabezado x5c para admitir la autenticación basada en emisor o nombre del firmante. |
Nombre de usuario y contraseña
Nombre de la variable | Valor |
---|---|
AZURE_CLIENT_ID |
ID de una aplicación de Microsoft Entra. |
AZURE_TENANT_ID |
ID del inquilino de Microsoft Entra de la aplicación. |
AZURE_USERNAME |
Nombre de usuario (normalmente una dirección de correo electrónico). |
AZURE_PASSWORD |
Contraseña asociada para el nombre de usuario especificado. |
La configuración se intenta en este orden. Por ejemplo, si los valores del secreto de cliente y el certificado están presentes, se utiliza el secreto de cliente.
Pasos siguientes
En este artículo se ha tratado la autenticación para aplicaciones hospedadas en Azure. Esta forma de autenticación es una de las varias maneras con las que puede autenticarse en Azure SDK para Java. En los siguientes artículos se describen otras maneras:
- Autenticación de Azure en entornos de desarrollo de Java
- Autenticación de Azure con entidades de servicio
- Autenticación de Azure con credenciales de usuario
Para solucionar problemas de autenticación de aplicaciones hospedadas en Azure, consulte Solución de problemas de autenticación de aplicaciones hospedadas en Azure.
Después de conocer la autenticación, consulte Configuración del registro en Azure SDK para Java para obtener información sobre la funcionalidad de registro que proporciona el SDK.