Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La autenticación interactiva con Microsoft Entra ID requiere un explorador web. Sin embargo, en el caso de dispositivos y sistemas operativos que no proporcionan un explorador web, el flujo de código del dispositivo permite al usuario usar otro dispositivo (por ejemplo, otro equipo o un teléfono móvil) para iniciar sesión de forma interactiva. Mediante el flujo de código de dispositivo, la aplicación obtiene tokens a través de un proceso de dos pasos especialmente diseñado para estos dispositivos o sistema operativo. Algunos ejemplos de estas aplicaciones son aplicaciones que se ejecutan en IoT o herramientas de Command-Line (CLI).
Un flujo de código de dispositivo típico sigue los pasos:
Cada vez que se necesita autenticación de usuario, la aplicación proporciona un código para el usuario. Se pide al usuario que use otro dispositivo, como un smartphone conectado a Internet, para ir a una dirección URL, por ejemplo,
https://microsoft.com/deviceloginy escribir el código. Una vez hecho eso, la página web lleva al usuario a una experiencia de autenticación normal, que incluye peticiones de consentimiento y autenticación multifactor, en caso necesario.Tras una autenticación correcta, la aplicación de línea de comandos recibe los tokens necesarios a través de un canal posterior y los usa para realizar las llamadas a la API web que necesita.
Constraints
- Flujo de código de dispositivo solo está disponible para aplicaciones cliente públicas
- La autoridad pasada en el
PublicClientApplicationdebe configurarse con una de las opciones siguientes:- Con inquilino del tipo
https://login.microsoftonline.com/{tenant}/dondetenantes el GUID que representa el identificador del inquilino o un dominio asociado con el inquilino. - Cualquier cuenta profesional y educativa (
https://login.microsoftonline.com/organizations/)
- Con inquilino del tipo
El punto de conexión de Azure AD v2.0 aún no admite cuentas de Microsoft personales v2.0 de Azure AD (no se pueden usar los inquilinos
/commonni/consumers).
Fragmento de código
PublicClientApplication app = PublicClientApplication.builder(PUBLIC_CLIENT_ID)
.authority(AUTHORITY)
.build();
Consumer<DeviceCode> deviceCodeConsumer = (DeviceCode deviceCode) -> {
System.out.println(deviceCode.message());
};
CompletableFuture<IAuthenticationResult> future = app.acquireToken(
DeviceCodeFlowParameters.builder(scope, deviceCodeConsumer).build());
future.handle((res, ex) -> {
if(ex != null) {
System.out.println("message - " + ex.getMessage());
return "Unknown!";
}
System.out.println("Access Token - " + res.accessToken());
System.out.println("ID Token - " + res.idToken());
return res;
});
future.join();
Información adicional
En caso de que quiera obtener más información sobre el flujo de código del dispositivo: