Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Interaktivní ověřování pomocí Microsoft Entra ID vyžaduje webový prohlížeč. V případě zařízení a operačních systémů, které neposkytují webový prohlížeč, ale tok kódu zařízení umožňuje uživateli používat jiné zařízení (například jiný počítač nebo mobilní telefon) k interaktivnímu přihlášení. Pomocí toku kódu zařízení aplikace získá tokeny prostřednictvím dvoustupňového procesu, který je speciálně určený pro tato zařízení nebo operační systém. Příklady takových aplikací jsou aplikace běžící na zařízeních IoT nebo nástroje příkazového řádku (CLI).
Typický tok kódu zařízení se řídí postupem:
Pokaždé, když je vyžadováno ověření uživatele, aplikace poskytne uživateli kód. Uživatel se zobrazí výzva k použití jiného zařízení, například smartphonu připojeného k internetu, k přechodu na adresu URL, například
https://microsoft.com/devicelogin, a k zadání kódu. To znamená, že webová stránka uživatele provede normálním prostředím ověřování, které v případě potřeby zahrnuje výzvy k vyjádření souhlasu a vícefaktorové ověřování.Po úspěšném ověření aplikace příkazového řádku obdrží požadované tokeny prostřednictvím zpětného kanálu a použije je k provádění potřebných volání webového rozhraní API.
Omezení
- Tok kódu zařízení je k dispozici pouze pro veřejné klientské aplikace.
- Autorita předaná v
PublicClientApplicationmusí být nakonfigurována jako jedna z níže uvedených možností:- Tenant ve tvaru
https://login.microsoftonline.com/{tenant}/, kdetenantje buď identifikátor GUID představující ID tenanta, nebo doména přidružená k tenantovi. - Všechny pracovní a školní účty (
https://login.microsoftonline.com/organizations/)
- Tenant ve tvaru
Osobní účty Microsoft zatím nejsou koncovým bodem služby Azure AD v2.0 podporovány (nelze použít klienty
/commonani/consumers).
Fragment kódu
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();
Další informace
Pokud chcete získat další informace o toku kódu zařízení: