Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'autenticazione interattiva con Microsoft Entra ID richiede un Web browser. Tuttavia, nel caso di dispositivi e sistemi operativi che non forniscono un Web browser, il flusso del codice del dispositivo consente all'utente di usare un altro dispositivo (ad esempio un altro computer o un telefono cellulare) per accedere in modo interattivo. Usando il flusso di codice del dispositivo, l'applicazione ottiene i token tramite un processo in due passaggi appositamente progettato per questi dispositivi/sistemi operativi. Esempi di tali applicazioni sono applicazioni in esecuzione in IoT o Command-Line tools (CLI).
Un flusso di codice tipico del dispositivo segue i passaggi seguenti:
Ogni volta che è necessaria l'autenticazione utente, l'app fornisce un codice per l'utente. All'utente viene chiesto di usare un altro dispositivo, ad esempio uno smartphone connesso a Internet, di passare a un URL, ad esempio ,
https://microsoft.com/devicelogine immettere il codice. Una volta fatto, la pagina web guida l'utente attraverso una procedura di autenticazione standard, che include le richieste di consenso e l'autenticazione a più fattori, se necessario.Una volta completata correttamente l'autenticazione, l'app da riga di comando riceve i token necessari tramite un backchannel e li usa per eseguire le chiamate all'API Web necessarie.
Vincoli
- Il flusso di codice del dispositivo è disponibile solo per le applicazioni client pubbliche
- L'autorità passata in
PublicClientApplicationdeve essere configurata come una delle opzioni seguenti:- Tenant nel formato
https://login.microsoftonline.com/{tenant}/in cuitenantpuò essere il GUID che rappresenta l'ID del tenant oppure un dominio associato al tenant. - Tutti gli account aziendali e scolastici (
https://login.microsoftonline.com/organizations/)
- Tenant nel formato
Microsoft account personali non sono ancora supportati dall'endpoint Azure AD v2.0 (non è possibile usare
/commono/consumerstenant).
Frammento di codice
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();
Informazioni aggiuntive
Nel caso in cui si desideri ottenere altre informazioni sul flusso del codice del dispositivo: