Compartir vía


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 y AZURE_TENANT_ID tal y como se define en Variables de entorno configura DefaultAzureCredential para autenticarse como la entidad de servicio especificada por los valores.
  • Si se establece .managedIdentityClientId(String) en el generador o la variable AZURE_CLIENT_ID de entorno, se configura DefaultAzureCredential 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 variable AZURE_TENANT_ID de entorno, se configura DefaultAzureCredential para autenticarse en un inquilino específico para la caché de tokens compartidos o IntelliJ IDEA.
  • Al establecer la variable de entorno AZURE_USERNAME configura DefaultAzureCredential 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/MSIde , 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:

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.