Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A autenticação interativa com o Microsoft Entra ID requer um navegador da Web. No entanto, no caso de dispositivos e sistemas operativos que não disponibilizam um navegador Web, o fluxo de código do dispositivo permite ao utilizador usar outro dispositivo (por exemplo, outro computador ou telemóvel) para iniciar sessão interativamente. Ao utilizar o fluxo de código do dispositivo, a aplicação obtém tokens através de um processo em duas etapas especialmente concebido para estes dispositivos/sistemas operativos. Exemplos de tais aplicações são aplicações executadas em ambientes IoT ou ferramentas de linha de comandos (CLI).
Um fluxo típico de código de dispositivo segue os passos:
Sempre que é necessária autenticação do utilizador, a aplicação fornece um código para o utilizador. O utilizador é convidado a usar outro dispositivo, como um smartphone ligado à internet, para aceder a uma URL, por exemplo,
https://microsoft.com/devicelogin, e introduzir o código. Feito isso, a página web conduz o utilizador por uma experiência normal de autenticação, que inclui pedidos de consentimento e autenticação multifator, se necessário.Após a autenticação bem-sucedida, a aplicação de linha de comandos recebe os tokens necessários através de um canal secundário e usa-os para realizar as chamadas à API web de que necessita.
Restrições
- O Fluxo de Código de Dispositivo está disponível apenas para aplicações clientes públicas
- A autoridade indicada em
PublicClientApplicationdeve ser configurada com uma das opções abaixo:- Tenanted do formulário
https://login.microsoftonline.com/{tenant}/ondetenanté ou o GUID que representa o ID do inquilino ou um domínio associado ao inquilino. - Quaisquer contas profissionais e escolares (
https://login.microsoftonline.com/organizations/)
- Tenanted do formulário
As contas pessoais da Microsoft ainda não são suportadas pelo ponto final do Azure AD v2.0 (não é possível utilizar inquilinos
/commonou/consumers).
Excerto 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 queira saber mais sobre o fluxo de código do dispositivo: