Compartir vía


Autenticación de Azure en entornos de desarrollo de Java

En este artículo se proporciona información general sobre la compatibilidad de la biblioteca de Azure Identity para la autenticación de tokens de Microsoft Entra. Esta compatibilidad permite la autenticación de las aplicaciones que se ejecutan localmente en las máquinas de los desarrolladores por medio de un conjunto de implementaciones de TokenCredential.

En este artículo se tratan los siguientes asuntos:

Para solucionar problemas de autenticación del entorno de desarrollo, consulte Solución de problemas de autenticación del entorno de desarrollo.

Credencial de código de dispositivo

La credencial de código de dispositivo autentica de forma interactiva a un usuario en dispositivos con una interfaz de usuario limitada. Funciona solicitando al usuario que visite una dirección URL de inicio de sesión en una máquina habilitada para explorador cuando la aplicación intenta realizar la autenticación. Después, el usuario escribe el código de dispositivo mencionado en las instrucciones junto con sus credenciales de inicio de sesión. Tras una autenticación correcta, la aplicación que solicitó la autenticación se autentica correctamente en el dispositivo en el que se ejecuta.

Para más información, consulte Flujo de concesión de autorización de dispositivo de OAuth 2.0 y la Plataforma de identidad de Microsoft.

Habilitación de aplicaciones para el flujo de código de dispositivo

Para autenticar a un usuario mediante el flujo de código de dispositivo, siga estos pasos:

  1. Vaya a Microsoft Entra ID en Azure Portal y busque el registro de la aplicación.
  2. Vaya a la sección Authentication (Autenticación).
  3. En Suggested Redirected URIs (Identificadores URI redirigidos sugeridos), compruebe el identificador URI que termina con /common/oauth2/nativeclient.
  4. En Default Client Type (Tipo de cliente predeterminado), seleccione Yes (Sí) en Treat application as a public client (Tratar la aplicación como un cliente público).

Estos pasos permitirán que la aplicación se autentique, pero todavía no tendrá permiso para iniciar sesión en Microsoft Entra ID ni para acceder a los recursos en su nombre. Para cambiar esto, vaya a API Permissions (Permisos de API) y habilite Microsoft Graph y los recursos a los que desea acceder.

También debe ser el administrador del inquilino para conceder el consentimiento a la aplicación al iniciar sesión por primera vez.

Si no puede configurar la opción de flujo de código de dispositivo en Microsoft Entra ID, puede que sea necesario que la aplicación sea multiinquilino. Para que la aplicación sea multiinquilino, vaya al panel Authentication (Autenticación) y, a continuación, seleccione Accounts in any organizational directory (Cuentas en cualquier directorio organizativo). En Treat application as a public client (Tratar la aplicación como un cliente público), seleccione Yes (Sí).

Autenticación de una cuenta de usuario con el flujo de código de dispositivo

En el siguiente ejemplo se muestra la autenticación del elemento SecretClient de la biblioteca cliente azure-security-keyvault-secrets con la clase DeviceCodeCredential en un dispositivo IoT.

DeviceCodeCredential deviceCodeCredential = new DeviceCodeCredentialBuilder()
  .challengeConsumer(challenge -> {
    // lets user know of the challenge
    System.out.println(challenge.getMessage());
  }).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(deviceCodeCredential)
  .buildClient();

Credencial interactiva del explorador

Esta credencial autentica de forma interactiva a un usuario con el explorador del sistema predeterminado y ofrece una experiencia de autenticación sin problemas, ya que le permite usar sus propias credenciales para autenticar la aplicación.

Habilitación de aplicaciones para el flujo de OAuth 2 interactivo del explorador

Para usar InteractiveBrowserCredential, debe registrar una aplicación en Microsoft Entra ID con permisos para iniciar sesión en nombre de un usuario. Siga los pasos anteriores correspondientes al flujo de código de dispositivo para registrar la aplicación. Como se mencionó anteriormente, un administrador del inquilino debe conceder consentimiento a la aplicación antes de que cualquier cuenta de usuario pueda iniciar sesión.

Es posible que observe que en InteractiveBrowserCredentialBuilder se requiere una dirección URL de redireccionamiento. Agregue la dirección URL de redireccionamiento a la subsección URI de redireccionamiento en la sección Autenticación de la aplicación de Microsoft Entra registrada.

Autenticación de una cuenta de usuario de forma interactiva en el explorador

En el siguiente ejemplo se muestra la autenticación del elemento SecretClient de la biblioteca cliente azure-security-keyvault-secrets con la clase InteractiveBrowserCredential.

InteractiveBrowserCredential interactiveBrowserCredential = new InteractiveBrowserCredentialBuilder()
  .clientId("<your client ID>")
  .redirectUrl("http://localhost:8765")
  .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(interactiveBrowserCredential)
  .buildClient();

Credencial de la CLI de Azure

La credencial de la CLI de Azure se autentica en un entorno de desarrollo con el usuario o la entidad de servicio habilitados en la CLI de Azure. Usa la CLI de Azure dada a un usuario que ya ha iniciado sesión en ella y usa la CLI para autenticar la aplicación con Microsoft Entra ID.

CLI de Azure de inicio de sesión para AzureCliCredential

Inicie sesión como usuario con el siguiente comando de la CLI de Azure:

az login

Inicie sesión como una entidad de servicio con el siguiente comando:

az login \
    --service-principal \
    --username <client-ID> \
    --password <client-secret> \
    --tenant <tenant-ID>

Si la cuenta o la entidad de servicio tiene acceso a varios inquilinos, asegúrese de que el inquilino o la suscripción que desee tiene el estado "Enabled" (Habilitado) en la salida del siguiente comando:

az account list

Antes de usar AzureCliCredential en el código, ejecute el siguiente comando para comprobar que la cuenta se ha configurado correctamente.

az account get-access-token

Es posible que tenga que repetir este proceso después de un determinado período de tiempo, en función de la validez del token de actualización de su organización. Por lo general, este período de validez es de unas semanas o unos meses. AzureCliCredential le pide que vuelva a iniciar sesión.

Autenticación de una cuenta de usuario con la CLI de Azure

En el siguiente ejemplo se muestra la autenticación del elemento SecretClient de la biblioteca cliente azure-security-keyvault-secrets con la clase AzureCliCredential en una estación de trabajo con la CLI de Azure instalada y con la sesión iniciada.

AzureCliCredential cliCredential = new AzureCliCredentialBuilder().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(cliCredential)
  .buildClient();

Credencial de IntelliJ

La credencial de IntelliJ se autentica en un entorno de desarrollo con la cuenta en Azure Toolkit for IntelliJ. Utiliza la información del usuario que ha iniciado sesión en el IDE de IntelliJ para autenticar la aplicación en Microsoft Entra ID.

Inicio de sesión en Azure Toolkit for IntelliJ para IntelliJCredential

Siga estos pasos para iniciar sesión:

  1. En la ventana de IntelliJ, abra Archivo > Configuración > Complementos.
  2. Busque "Azure Toolkit for IntelliJ" en el marketplace. Instale y reinicie el IDE.
  3. Busque el nuevo elemento de menú Herramientas > Azure > Inicio de sesión de Azure
  4. Inicio de sesión del dispositivo le ayudará a iniciar sesión como una cuenta de usuario. Siga las instrucciones para iniciar sesión en el sitio web de login.microsoftonline.com con el código del dispositivo. IntelliJ le pedirá que seleccione las suscripciones. Seleccione la suscripción que incluye los recursos a los que desea acceder.

Autenticación de una cuenta de usuario con IntelliJ IDEA

En el ejemplo siguiente se muestra cómo autenticar desde SecretClient la biblioteca cliente azure-security-keyvault-secrets mediante en IntelliJCredential una estación de trabajo donde está instalado IntelliJ IDEA y el usuario ha iniciado sesión con una cuenta de Azure en el kit de herramientas de Azure para IntelliJ.

IntelliJCredential intelliJCredential = new IntelliJCredentialBuilder()
  .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(intelliJCredential)
  .buildClient();

Pasos siguientes

En este artículo se ha tratado la autenticación durante el desarrollo mediante las credenciales disponibles en el equipo. 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:

Si tiene problemas relacionados con la autenticación del entorno de desarrollo, consulte Solución de problemas de autenticación del entorno de desarrollo.

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.