Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A autenticação interativa com a ID do Microsoft Entra requer um navegador da Web. No entanto, no caso de dispositivos e sistemas operacionais que não fornecem um navegador da Web, o fluxo de código do dispositivo permite que o usuário use outro dispositivo (por exemplo, outro computador ou um telefone celular) para entrar interativamente. Ao usar o fluxo de código do dispositivo, o aplicativo obtém tokens por meio de um processo de duas etapas especialmente projetado para esses dispositivos/sistemas operacionais. Exemplos desses aplicativos são aplicativos executados em dispositivos de IoT, ou ferramentas de linha de comando (CLI).
Um fluxo de código de dispositivo típico segue as etapas:
Sempre que a autenticação do usuário for necessária, o aplicativo fornecerá um código para o usuário. O usuário é solicitado a usar outro dispositivo, como um smartphone conectado à Internet, para acessar uma URL, por exemplo,
https://microsoft.com/devicelogine inserir o código. Isso feito, a página da Web conduz o usuário por uma experiência de autenticação normal, a qual inclui solicitações de consentimento e autenticação multifator, se necessário.Após a autenticação bem-sucedida, o aplicativo de linha de comando recebe os tokens necessários por meio de um canal de apoio e os usa para executar as chamadas à API Web necessárias.
Restrições
- O Fluxo de Código do Dispositivo só está disponível para aplicativos cliente públicos
- A autoridade informada em
PublicClientApplicationprecisa ser configurada como uma das opções abaixo:- Com locatários do formulário
https://login.microsoftonline.com/{tenant}/em quetenanté o GUID que representa a ID do locatário ou um domínio associado ao locatário. - Todas as contas corporativas e escolares (
https://login.microsoftonline.com/organizations/)
- Com locatários do formulário
As contas pessoais da Microsoft ainda não são compatíveis com o ponto de extremidade do Azure AD v2.0. Não é possível usar os locatários
/commonou/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();
Informações adicionais
Caso deseje saber mais sobre o fluxo de código do dispositivo: