Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Voor interactieve verificatie met Microsoft Entra ID is een webbrowser vereist. In het geval van apparaten en besturingssystemen die geen webbrowser bieden, kan de gebruiker echter een ander apparaat (bijvoorbeeld een andere computer of een mobiele telefoon) gebruiken om zich interactief aan te melden. Door de apparaatcodestroom te gebruiken, verkrijgt de toepassing tokens via een proces in twee stappen dat speciaal is ontworpen voor deze apparaten/het besturingssysteem. Voorbeelden van dergelijke toepassingen zijn toepassingen die worden uitgevoerd op IoT of Command-Line hulpprogramma's (CLI).
Een typische apparaatcodestroom volgt de stappen:
Wanneer gebruikersverificatie is vereist, biedt de app een code voor de gebruiker. De gebruiker wordt gevraagd een ander apparaat, zoals een smartphone met internetverbinding, te gebruiken om bijvoorbeeld
https://microsoft.com/deviceloginnaar een URL te gaan en de code in te voeren. Eenmaal klaar, leidt de webpagina de gebruiker via een normale verificatie-ervaring, waaronder toestemmingsprompts en meervoudige verificatie, indien nodig.Na een geslaagde verificatie ontvangt de opdrachtregel-app de vereiste tokens via een back-kanaal en gebruikt deze om de vereiste web-API-aanroepen uit te voeren.
Constraints
- Apparaatcodestroom is alleen beschikbaar voor openbare clienttoepassingen
- De autoriteit die is doorgegeven in
PublicClientApplicationmoet worden geconfigureerd als een van de onderstaande opties:- Tenanted van het formulier
https://login.microsoftonline.com/{tenant}/waarbijtenantde GUID de tenant-id of een domein vertegenwoordigt dat is gekoppeld aan de tenant. - Elk werk- en schoolaccount (
https://login.microsoftonline.com/organizations/)
- Tenanted van het formulier
persoonlijke Microsoft-accounts worden nog niet ondersteund door het Azure AD v2.0-eindpunt (u kunt geen
/common- of/consumers-tenants gebruiken).
Codefragment
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();
Aanvullende informatie
Als u meer wilt weten over de apparaatcodestroom: