Autenticación de Azure con credenciales de usuario
En este artículo se describe cómo admite la biblioteca Azure Identity la autenticación de tokens de Microsoft Entra con credenciales proporcionadas por el usuario. 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:
- Credencial de código de dispositivo
- Credencial interactiva del explorador
- Credencial de nombre de usuario y contraseña
Para solucionar problemas de autenticación de credenciales de usuario, consulte Solución de problemas de autenticación de credenciales de usuario.
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:
- Vaya a Microsoft Entra ID en Azure Portal y busque el registro de la aplicación.
- Vaya a la sección Authentication (Autenticación).
- En Suggested Redirected URIs (Identificadores URI redirigidos sugeridos), compruebe el identificador URI que termina con
/common/oauth2/nativeclient
. - En Default Client Type (Tipo de cliente predeterminado), seleccione
yes
(Sí) paraTreat 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 abordar este problema, vaya a Permisos de API y habilite Microsoft Graph y los recursos a los que desea acceder, como Key Vault.
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 de secretos de Azure Key Vault para Java con la clase DeviceCodeCredential
en un dispositivo IoT.
/**
* Authenticate with device code credential.
*/
DeviceCodeCredential deviceCodeCredential = new DeviceCodeCredentialBuilder()
.challengeConsumer(challenge -> {
// Lets the user know about 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
.
/**
* Authenticate interactively in the browser.
*/
InteractiveBrowserCredential interactiveBrowserCredential = new InteractiveBrowserCredentialBuilder()
.clientId("<your app client ID>")
.redirectUrl("YOUR_APP_REGISTERED_REDIRECT_URL")
.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 nombre de usuario y contraseña
El elemento UsernamePasswordCredential
ayuda a autenticar una aplicación cliente pública con credenciales de usuario que no requieran autenticación multifactor. En el siguiente ejemplo se muestra la autenticación del elemento SecretClient
de la biblioteca cliente azure-security-keyvault-secrets con la clase UsernamePasswordCredential
. El usuario no debe tener activada la autenticación multifactor.
/**
* Authenticate with username, password.
*/
UsernamePasswordCredential usernamePasswordCredential = new UsernamePasswordCredentialBuilder()
.clientId("<your app client ID>")
.username("<your username>")
.password("<your password>")
.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(usernamePasswordCredential)
.buildClient();
Para más información, consulte Plataforma de identidad de Microsoft y credenciales de contraseña de propietario de recursos de OAuth 2.0.
Pasos siguientes
En este artículo se ha tratado la autenticación con credenciales de usuario. 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 aplicaciones de Java hospedadas en Azure
- Autenticación de Azure con entidades de servicio
Si tiene problemas relacionados con la autenticación de credenciales de usuario, consulte Solución de problemas de autenticación de credenciales de usuario.
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.