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 identidades de Azure 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 al pedir al usuario que visite una dirección URL de inicio de sesión en un equipo habilitado para el explorador cuando la aplicación intenta autenticarse. A continuación, 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 permiten que la aplicación se autentique, pero aún no tiene permiso para iniciar sesión en el identificador de Entra de Microsoft o 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 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 el identificador de Entra de Microsoft, puede requerir 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 para que el flujo de código del dispositivo registre 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 redirección en la sección Autenticación de la aplicación 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 habilitado o la entidad de servicio en la CLI de Azure. Usa la CLI de Azure dado a un usuario que ya ha iniciado sesión y usa la CLI para autenticar la aplicación en el identificador de Microsoft Entra.

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 del kit de herramientas de Azure para IntelliJ. Usa la información del usuario que ha iniciado sesión en el IDE de IntelliJ y la usa 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 Archivos > Configuración > Complementos.
  2. Busque "Kit de herramientas de Azure para IntelliJ" en Marketplace. Instale y reinicie el IDE.
  3. Búsqueda del nuevo elemento de menú Herramientas > de inicio de sesión de Azure en Azure >
  4. El inicio de sesión del dispositivo le ayuda a iniciar sesión como una cuenta de usuario. Siga las instrucciones para iniciar sesión en el login.microsoftonline.com sitio web con el código del dispositivo. IntelliJ le pide que seleccione las suscripciones. Seleccione la suscripción que incluye los recursos a los que desea acceder.

En Windows, también necesita la ruta de acceso de la base de datos KeePass para leer las credenciales de IntelliJ. Puede encontrar la ruta de acceso en Configuración de IntelliJ en File > Configuración > Appearance & Behavior > System Configuración > Passwords. Tome nota de la ubicación de la ruta de acceso de KeePassDatabase.

Autenticación de una cuenta de usuario con IntelliJ IDEA

En el ejemplo siguiente se muestra cómo autenticar el elemento SecretClient de la biblioteca cliente azure-security-keyvault-secrets con la clase IntelliJCredential en una estación de trabajo en la que se ha instalado IntelliJ IDEA y en la que el usuario ha iniciado sesión con una cuenta de Azure.

IntelliJCredential intelliJCredential = new IntelliJCredentialBuilder()
  // KeePass configuration isrequired only for Windows. No configuration needed for Linux / Mac.
  .keePassDatabasePath("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(intelliJCredential)
  .buildClient();

Credencial de Visual Studio Code

La credencial de Visual Studio Code permite autenticarse en entornos de desarrollo donde está instalado VS Code con la extensión de la cuenta de Azure de VS Code. Usa la información del usuario que ha iniciado sesión en el IDE de VS Code y la usa para autenticar la aplicación en microsoft Entra ID.

Inicio de sesión en la extensión de cuenta de Azure de Visual Studio Code para VisualStudioCodeCredential

La integración de Nn con la extensión de cuenta de Azure controla la autenticación de Visual Studio Code. Para usar esta forma de autenticación, instale la extensión de cuenta de Azure y, a continuación, use Ver paleta de comandos para ejecutar el comando Azure: Iniciar sesión.> Este comando abre una ventana del explorador y muestra una página para iniciar sesión en Azure. Una vez completado el proceso de inicio de sesión, puede cerrar el explorador como se indica. La ejecución de la aplicación (ya sea en el depurador o en cualquier parte de la máquina de desarrollo) usa la credencial del inicio de sesión.

Autenticación de una cuenta de usuario con Visual Studio Code

En el ejemplo siguiente se muestra cómo autenticar el elemento SecretClient de la biblioteca cliente azure-security-keyvault-secrets con la clase VisualStudioCodeCredential en una estación de trabajo en la que se ha instalado Visual Studio Code y en la que el usuario ha iniciado sesión con una cuenta de Azure.

VisualStudioCodeCredential visualStudioCodeCredential = new VisualStudioCodeCredentialBuilder().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(visualStudioCodeCredential)
  .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.