Autenticazione integrata di Windows

Se l'applicazione desktop o per dispositivi mobili viene eseguita in Windows e in un computer connesso a un dominio di Windows (Active Directory o Microsoft Entra aggiunto) è possibile usare l'autenticazione integrata Windows (IWA) per acquisire un token in modo invisibile all'utente. Quando si usa l'applicazione non è necessaria l'interfaccia utente.

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();

Vincoli

  • Solo utenti federati*, ad esempio, in cui l'autenticazione viene federata a un'autorità locale (ad esempio ADFS) o scenari ibridi in cui è abilitato l'accesso Single Sign-On facile. I tenant cloud puri, in cui gli utenti si trovano direttamente in Microsoft Entra ID, senza alcun backup Active Directory, non possono usare questo flusso.
  • IWA NON aggira l'MFA (autenticazione a più fattori). Se è configurata l'autenticazione a più fattori, l'autenticazione integrata di Windows potrebbe avere esito negativo se è necessaria una richiesta di autenticazione a più fattori, poiché richiede l'interazione dell'utente.

Questo è complicato. IWA non è interattiva, ma l'autenticazione a due fattori richiede l'interazione dell'utente. Non sei tu a controllare quando il provider di identità richiede che venga eseguita l'autenticazione a due fattori, bensì l'amministratore del tenant. Dalle nostre osservazioni, l'autenticazione a più fattori è necessaria quando si accede da un paese/area geografica diversa, quando non si è connessi tramite VPN a una rete aziendale e talvolta anche quando si è connessi tramite VPN. Non aspettarsi un set deterministico di regole, Microsoft Entra ID usa l'intelligenza artificiale per apprendere continuamente se è necessaria la funzionalità 2FA. Dovresti ripiegare su una richiesta all'utente se IWA non riesce

  • L'autorità fornita in PublicApplication deve essere:

    • tenanted (del formato https://login.microsoftonline.com/{tenant}/ dove tenant è il GUID che rappresenta l'ID del tenant oppure un dominio associato al tenant).
    • per tutti gli account aziendali e scolastici (https://login.microsoftonline.com/organizations/)

    Gli account personali Microsoft non sono supportati (non è possibile usare i tenant /common o /consumers)

  • Poiché l'autenticazione integrata Windows è un flusso invisibile all'utente:

    • L'utente dell'applicazione deve aver precedentemente acconsentito all'uso dell'applicazione
    • o l'amministratore del tenant deve aver precedentemente acconsentito a tutti gli utenti del tenant per usare l'applicazione.
    • Ciò significa che:
      • o tu, in qualità di sviluppatore, hai premuto per te stesso il pulsante Grant nel portale Azure,
      • o un amministratore tenant ha premuto il pulsante Concedi/revoca il consenso amministratore per {dominio tenant} nella scheda Autorizzazioni API della registrazione per l'applicazione
      • oppure è stato fornito un modo per consentire agli utenti di fornire il consenso all'applicazione
      • oppure è stato fornito un modo per consentire all'amministratore del tenant di fornire il consenso per l'applicazione