Integrerad Windows-autentisering

Om ditt skrivbords- eller mobilprogram körs på Windows och på en dator som är ansluten till en Windows domän (služba Active Directory eller Microsoft Entra ansluten) är det möjligt att använda IWA (Integrated Windows Authentication) för att hämta en token tyst. Inget användargränssnitt krävs när du använder programmet.

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

Constraints

  • Endast för federerade* användare, det vill säga där autentisering federeras till en lokal identitetsprovider (till exempel ADFS), eller hybridscenarier där sömlös SSO är aktiverat. Klientorganisationer som endast finns i molnet, där användarna finns direkt i Microsoft Entra ID utan något služba Active Directory-stöd, kan inte använda detta flöde.
  • IWA kringgår INTE MFA (multifaktorautentisering). Om MFA har konfigurerats kan IWA misslyckas om en MFA-utmaning krävs, eftersom MFA kräver användarinteraktion.

Den här är knepig. IWA är inte interaktivt, men 2FA kräver användarinteraktivitet. Du styr inte när identitetsprovidern begär att 2FA ska utföras, gör klientadministratören det. Från våra observationer krävs 2FA när du loggar in från ett annat land/en annan region, när du inte är ansluten via VPN till ett företagsnätverk, och ibland även när du är ansluten via VPN. Förvänta dig inte en deterministisk uppsättning regler, Microsoft Entra ID använder AI för att kontinuerligt lära sig om 2FA krävs. Du bör falla tillbaka på en uppmaning till användaren om IWA misslyckas

  • Den myndighet som skickas in i PublicApplication måste vara:

    • klientorganisation (i formuläret https://login.microsoftonline.com/{tenant}/ där tenant är guid som representerar klientorganisations-ID:t eller en domän som är associerad med klientorganisationen.
    • för alla arbets- och skolkonton (https://login.microsoftonline.com/organizations/)

    Personliga Microsoft-konton stöds inte (du kan inte använda klientorganisationerna /common eller /consumers)

  • Eftersom integrerad Windows-autentisering är ett tyst flöde:

    • användaren av ditt program måste tidigare ha samtyckt till att använda programmet
    • eller så måste klientadministratören tidigare ha samtyckt till att alla användare i klientorganisationen använder programmet.
    • Det innebär att:
      • antingen har du som utvecklare tryckt på knappen Bevilja på Azure-portalen själv,
      • eller så har en klientadministratör tryckt på knappen Bevilja/återkalla administratörsmedgivande för {klientdomän} på fliken API-behörigheter i registreringen för programmet
      • eller så har du gett användarna ett sätt att samtycka till programmet
      • eller så har du gett klientadministratören ett sätt att godkänna programmet