Compartir a través de


Autentica aplicaciones Java hospedadas en Azure a recursos de Azure mediante una identidad administrada asignada por el sistema.

El enfoque recomendado para autenticar una aplicación hospedada Azure en otros recursos de Azure consiste en usar una identidad administrada. La mayoría de los servicios Azure admiten este enfoque, incluidas las aplicaciones hospedadas en Azure App Service, Azure Container Apps y Azure Virtual Machines. Para obtener más información, consulte Azure servicios y tipos de recursos que admiten identidades administradas. Para obtener más información sobre las distintas técnicas y enfoques de autenticación, consulte Autenticar aplicaciones Java para servicios de Azure mediante la biblioteca de identidades de Azure.

En las secciones siguientes, aprenderá:

  • Conceptos esenciales de identidad administrada.
  • Cómo crear una identidad administrada asignada por el sistema para la aplicación.
  • Asignación de roles a la identidad administrada asignada por el sistema.
  • Cómo autenticarse mediante la identidad administrada asignada por el sistema desde el código de la aplicación.

Conceptos esenciales de identidad administrada

Una identidad administrada permite a la aplicación conectarse de forma segura a otros recursos de Azure sin el uso de claves secretas u otros secretos de aplicación. Internamente, Azure realiza un seguimiento de la identidad y a qué recursos puede conectarse. Azure usa esta información para obtener automáticamente tokens de Microsoft Entra para la aplicación para permitir que se conecte a otros recursos de Azure.

Hay dos tipos de identidades administradas que se deben tener en cuenta al configurar la aplicación hospedada:

  • Las identidades administradas asignadas por el sistema están habilitadas directamente en un recurso Azure y están vinculadas a su ciclo de vida. Cuando se elimina el recurso, Azure elimina la identidad automáticamente. Las identidades asignadas por el sistema proporcionan un enfoque minimalista para usar identidades administradas.
  • Identidades administradas asignadas por el usuario se crean como recursos de Azure independientes y ofrecen mayor flexibilidad y capacidades. Son ideales para soluciones que implican varios recursos de Azure que necesitan compartir la misma identidad y permisos. Por ejemplo, si varias máquinas virtuales necesitan acceder al mismo conjunto de recursos de Azure, una identidad administrada asignada por el usuario proporciona reutilizabilidad y administración optimizada.

Sugerencia

Obtenga más información sobre cómo seleccionar y administrar identidades administradas asignadas por el sistema y por el usuario en el artículo de Recomendaciones de mejores prácticas para identidades administradas.

En las secciones siguientes se describen los pasos para habilitar y usar una identidad administrada asignada por el sistema para una aplicación hospedada Azure. Si necesita usar una identidad administrada asignada por el usuario, consulte Autenticar aplicaciones Java alojadas en Azure con recursos de Azure mediante una identidad administrada asignada por el usuario.

Habilitación de una identidad administrada asignada por el sistema en el recurso de hospedaje de Azure

Para empezar a usar una identidad administrada asignada por el sistema con la aplicación, habilite la identidad en el recurso de Azure que hospeda la aplicación, como una instancia de Azure App Service, Azure Container Apps o Azure Virtual Machines.

Puede habilitar una identidad administrada asignada por el sistema para un recurso de Azure mediante el portal de Azure o el Azure CLI.

  1. En el portal de Azure, vaya al recurso que hospeda el código de la aplicación, como una instancia de Azure App Service o Azure Container Apps.

  2. En la página de Información general del recurso, expanda Configuración y seleccione Identidad en el panel de navegación.

  3. En la página Identidad, cambie el control deslizante de estado en a .

  4. Seleccione Guardar para aplicar los cambios.

    Captura de pantalla que muestra cómo habilitar una identidad administrada asignada por el sistema en una aplicación contenedora.

Asignación de roles a la identidad administrada

A continuación, determine qué roles necesita la aplicación y asígnelos a la identidad administrada. Puede asignar roles a una identidad administrada en los ámbitos siguientes:

  • Recurso: los roles asignados solo se aplican a ese recurso específico.
  • grupo de recursos: los roles asignados se aplican a todos los recursos contenidos en el grupo de recursos.
  • Suscripción: Los roles asignados se aplican a todos los recursos contenidos en la suscripción.

En el ejemplo siguiente se muestra cómo asignar roles en el ámbito del grupo de recursos, ya que muchas aplicaciones administran todos sus recursos relacionados Azure mediante un único grupo de recursos.

  1. Vaya a la página Información general del grupo de recursos que contiene la aplicación con la identidad administrada asignada por el sistema.

  2. En el panel de navegación izquierdo, seleccione Control de acceso (IAM) .

  3. En la página Control de acceso (IAM), seleccione + Agregar en el menú superior y, a continuación, elija Agregar asignación de rol para ir a la página Agregar asignación de rol.

    Captura de pantalla que muestra cómo acceder a la página de asignación de roles de identidad.

  4. La página Agregar asignación de roles presenta un flujo de trabajo con pestañas y varios pasos para asignar roles a identidades. En la pestaña de rol inicial, use el cuadro de búsqueda de la parte superior para localizar el rol que desea asignar a la identidad.

  5. Seleccione el rol en los resultados y, a continuación, elija Siguiente para ir a la pestaña Miembros.

  6. En la opción Asignar acceso a, seleccione Identidad administrada.

  7. Para la opción Miembros , elija + Seleccionar miembros para abrir el panel Seleccionar identidades administradas.

  8. En el panel Seleccionar identidades administradas, utilice las listas desplegables de Suscripción e Identidad administrada para filtrar los resultados de búsqueda de sus identidades. Use el cuadro de búsqueda Select para buscar la identidad del sistema que ha habilitado para el recurso de Azure que hospeda la aplicación.

    Captura de pantalla que muestra el proceso de asignación de identidad administrada.

  9. Seleccione la identidad y elija Seleccione en la parte inferior del panel para continuar.

  10. Seleccione en la parte inferior de la página Revisar y asigne.

  11. En la pestaña final Revisar y asignar, seleccione Revisar y asignar para completar el flujo de trabajo.

Autenticación a los servicios de Azure desde tu aplicación

La biblioteca de identidades de Azure proporciona varias credenciales: implementaciones de TokenCredential adaptadas para admitir diferentes escenarios y flujos de autenticación de Microsoft Entra. Dado que la identidad administrada no está disponible cuando se ejecuta localmente, los pasos siguientes muestran qué credencial usar en qué escenario:

  • Entorno de desarrollo local: durante el desarrollo local solamente, use una clase denominada DefaultAzureCredential para una cadena de credenciales preconfigurada y con opiniones. DefaultAzureCredential detecta las credenciales de usuario de las herramientas o IDE locales, como la CLI de Azure o Visual Studio Code. También proporciona flexibilidad y comodidad para reintentos, tiempos de espera para respuestas y compatibilidad con varias opciones de autenticación. Visite el artículo Autenticación en servicios de Azure durante el desarrollo local para más información.
  • Aplicaciones hospedadas en Azure: Cuando su aplicación se ejecuta en Azure, use ManagedIdentityCredential para descubrir de forma segura la identidad administrada configurada para su aplicación. Especificar este tipo exacto de credencial impide que otras credenciales disponibles se recojan inesperadamente.

Implementación del código

Agregue la azure-identity dependencia al pom.xml archivo:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
</dependency>

Se accede a los servicios de Azure mediante clases de cliente especializadas de las distintas bibliotecas cliente del SDK de Azure. En el ejemplo de código siguiente se muestra cómo crear una instancia de credenciales y usarla con un cliente de servicio del SDK de Azure. En el código de la aplicación, complete los pasos siguientes para autenticarse mediante una identidad administrada:

  1. Importe las DefaultAzureCredentialBuilderclases , ManagedIdentityCredentialBuildery TokenCredential .
  2. Pase una instancia adecuada TokenCredential al cliente:
    • Uso DefaultAzureCredential al ejecutar localmente
    • Uso ManagedIdentityCredential cuando la aplicación se ejecuta en Azure

En el ejemplo siguiente se muestra cómo autenticar mediante SecretClient una identidad administrada asignada por el sistema:

import com.azure.core.credential.TokenCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.identity.ManagedIdentityCredentialBuilder;
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;

TokenCredential credential = null;

// Set up credential based on environment (Azure or local development)
String environment = System.getenv("ENV");

if (environment != null && environment.equals("production")) {
    credential = new ManagedIdentityCredentialBuilder()
        .build();
} else {
    credential = new DefaultAzureCredentialBuilder()
        .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(credential)
    .buildClient();

Pasos siguientes

En este artículo se trata la autenticación mediante una identidad administrada asignada por el sistema. Esta forma de autenticación es una de las varias maneras en que puede autenticarse en el Azure SDK para Java. En los artículos siguientes se describen otras maneras:

Si tiene problemas relacionados con la autenticación de aplicaciones hospedadas Azure, consulte Troubleshoot Azure-hosted application authentication.