Autenticação Integrada do Windows

Se seu aplicativo para desktop ou móvel for executado no Windows e estiver em um computador conectado a um domínio do Windows (associado ao Active Directory ou ao Microsoft Entra), será possível usar a IWA (Autenticação Integrada do Windows) para obter um token de forma silenciosa. Não é necessária uma interface do usuário ao usar o aplicativo.

final String AUTHORITY;
final String APP_ID;
String userName;
List<String> scopes;

PublicClientApplication app = PublicClientApplication.builder(APP_ID)
        .authority(AUTHORITY)
        .build();

IntegratedWindowsAuthenticationParameters parameters =
        IntegratedWindowsAuthenticationParameters.builder(scope, userName).build();

IAuthenticationResult future = app.acquireToken(parameters).get();

Restrições

  • Somente usuários federados*, ou seja, em que a autenticação está sendo federada para uma autoridade local (ADFS, por exemplo), ou cenários híbridos em que seamless-sso está habilitado. Locatários de nuvem pura, em que os usuários estão diretamente em Microsoft Entra ID, sem nenhum suporte Active Directory, não podem usar esse fluxo.
  • O IWA NÃO ignora a MFA (autenticação multifator). Caso a MFA esteja configurada, a IWA poderá falhar caso um desafio de MFA seja necessário, pois esta exige a interação do usuário.

Este é complicado. O IWA não é interativo, mas a 2FA requer interatividade do usuário. Você não controla quando o provedor de identidade solicita que a 2FA seja executada, o administrador do locatário o faz. Em nossas observações, a 2FA é necessária quando você faz logon de um país/região diferente, quando não está conectado via VPN a uma rede corporativa e, às vezes, até mesmo quando conectado via VPN. Não espere um conjunto determinístico de regras, Microsoft Entra ID usa IA para saber continuamente se a 2FA é necessária. Você deverá fazer fallback para um prompt de usuário se o IWA falhar

  • A autoridade passada no PublicApplication precisa ser:

    • com locatário (do formulário https://login.microsoftonline.com/{tenant}/ em que tenant é o GUID que representa a ID do locatário ou um domínio associado ao locatário).
    • para contas corporativas ou de estudante (https://login.microsoftonline.com/organizations/)

    Contas pessoais da Microsoft não são compatíveis (você não pode usar os locatários /common ou /consumers)

  • Como a Autenticação Windows Integrada é um fluxo silencioso:

    • o usuário do seu aplicativo deve ter consentido anteriormente em usar o aplicativo
    • ou o administrador do locatário deve ter concedido previamente consentimento para que todos os usuários do locatário usem o aplicativo.
    • Isso significa que:
      • ou você, como desenvolvedor, selecionou o botão Concessão no portal do Azure por conta própria.
      • ou um administrador do locatário pressionou o botão Conceder/revogar consentimento do administrador para {tenant domain} na guia Permissões de API do registro do aplicativo
      • ou você forneceu uma maneira para os usuários consentirem com o aplicativo
      • ou você forneceu uma maneira de o administrador do locatário dar consentimento ao aplicativo