Microsofts identitetsplattform apptyper och autentiseringsflöden

Microsofts identitetsplattform stöder autentisering för olika typer av moderna programarkitekturer. Alla arkitekturer baseras på branschstandardprotokollen OAuth 2.0 och OpenID Anslut. Genom att använda autentiseringsbiblioteken för Microsofts identitetsplattform autentiserar program identiteter och hämtar token för att få åtkomst till skyddade API:er.

Den här artikeln beskriver autentiseringsflöden och de programscenarier som de används i.

Programkategorier

Säkerhetstoken kan hämtas från flera typer av program, inklusive:

  • Webbappar
  • Mobilappar
  • Skrivbordsappar
  • Webb-API:er

Token kan också hämtas av appar som körs på enheter som inte har någon webbläsare eller som körs på Sakernas Internet (IoT).

I följande avsnitt beskrivs programkategorierna.

Skyddade resurser jämfört med klientprogram

Autentiseringsscenarier omfattar två aktiviteter:

Med användare eller utan användare

De flesta autentiseringsscenarier hämtar token för inloggade användare.

Scenarier med användare

Det finns dock även daemon-appar. I dessa scenarier hämtar program token för sig själva utan användare.

Scenarier med daemonappar

Program för enkelsidiga, offentliga klienter och konfidentiella klientprogram

Säkerhetstoken kan hämtas av flera typer av program. Dessa program tenderar att delas in i följande tre kategorier. Var och en används med olika bibliotek och objekt.

  • Ensidesprogram: Kallas även SPA:er, det här är webbappar där token hämtas av en JavaScript- eller TypeScript-app som körs i webbläsaren. Många moderna appar har ett enkelsidigt program i klientdelen som främst skrivs i JavaScript. Programmet använder ofta ett ramverk som Angular, React eller Vue. MSAL.js är det enda Microsoft-autentiseringsbiblioteket som stöder ensidesprogram.

  • Offentliga klientprogram: Appar i den här kategorin, som följande typer, loggar alltid in användare:

    • Skrivbordsappar som anropar webb-API:er för inloggade användare
    • Mobilappar
    • Appar som körs på enheter som inte har någon webbläsare, som de som körs på IoT
  • Konfidentiella klientprogram: Appar i den här kategorin omfattar:

    • Webbappar som anropar ett webb-API
    • Webb-API:er som anropar ett webb-API
    • Daemon-appar, även när de implementeras som en konsoltjänst som en Linux-daemon eller en Windows-tjänst

Logga in målgrupp

De tillgängliga autentiseringsflödena varierar beroende på inloggningspubliken. Vissa flöden är endast tillgängliga för arbets- eller skolkonton. Andra är tillgängliga både för arbets- eller skolkonton och för personliga Microsoft-konton.

Mer information finns i Kontotyper som stöds.

Programtyper

Microsofts identitetsplattform stöder autentisering för dessa apparkitekturer:

  • Enkelsidiga appar
  • Webbappar
  • Webb-API:er
  • Mobilappar
  • Inbyggda appar
  • Daemon-appar
  • Appar på serversidan

Program använder de olika autentiseringsflödena för att logga in användare och hämta token för att anropa skyddade API:er.

Ensidesapplikation

Många moderna webbappar skapas som enkelsidiga program på klientsidan. Dessa program använder JavaScript eller ett ramverk som Angular, Vue och React. Dessa program körs i en webbläsare.

Ensidesprogram skiljer sig från traditionella webbappar på serversidan när det gäller autentiseringsegenskaper. Med hjälp av Microsofts identitetsplattform kan ensidesprogram logga in användare och hämta token för att få åtkomst till serverdelstjänster eller webb-API:er. Microsofts identitetsplattform erbjuder två beviljandetyper för JavaScript-program:

MSAL.js (2.x) MSAL.js (1.x)
En enkelsidig programautentisering Ett implicit ensidesprogram

Webbapp som loggar in en användare

En webbapp som loggar in en användare

Så här skyddar du en webbapp som loggar in en användare:

  • Om du utvecklar i .NET använder du ASP.NET eller ASP.NET Core med ASP.NET OpenID Anslut mellanprogram. Att skydda en resurs innebär att verifiera säkerhetstoken, vilket görs av IdentityModel-tilläggen för .NET och inte MSAL-bibliotek.

  • Om du utvecklar i Node.js använder du MSAL Node.

Mer information finns i Webbapp som loggar in användare.

Webbapp som loggar in en användare och anropar ett webb-API för användarens räkning

En webbapp som anropar webb-API:er

Om du vill anropa ett webb-API från en webbapp för en användares räkning använder du auktoriseringskodflödet och lagrar de köpta token i tokencachen. Vid behov uppdaterar MSAL token och kontrollanten hämtar i tysthet token från cacheminnet.

Mer information finns i Webbapp som anropar webb-API:er.

Skrivbordsapp som anropar ett webb-API för en inloggad användare

Om en skrivbordsapp ska anropa ett webb-API som loggar in användare använder du MSAL:s interaktiva metoder för tokeninhämtning. Med dessa interaktiva metoder kan du styra inloggningsgränssnittet. MSAL använder en webbläsare för den här interaktionen.

En skrivbordsapp som anropar ett webb-API

Det finns en annan möjlighet för Windows-värdbaserade program på datorer som är anslutna till en Windows-domän eller med Microsoft Entra-ID. Dessa program kan tyst hämta en token med hjälp av integrerad Windows-autentisering.

Program som körs på en enhet utan en webbläsare kan fortfarande anropa ett API för en användares räkning. För att autentisera måste användaren logga in på en annan enhet som har en webbläsare. Det här scenariot kräver att du använder enhetskodflödet.

Enhetskodflöde

Även om vi inte rekommenderar att du använder det, är användarnamn/ lösenordsflödet tillgängligt i offentliga klientprogram. Det här flödet behövs fortfarande i vissa scenarier som DevOps.

Användning av användarnamn/lösenordsflödet begränsar dina program. Program kan till exempel inte logga in en användare som behöver använda multifaktorautentisering eller verktyget för villkorsstyrd åtkomst i Microsoft Entra-ID. Dina program drar inte heller nytta av enkel inloggning. Autentisering med användarnamn/lösenord-flödet strider mot principerna för modern autentisering och tillhandahålls endast av äldre skäl.

Om du vill att tokencacheminnet ska sparas i skrivbordsappar kan du anpassa tokencachens serialisering. Genom att implementera cache-serialisering med dubbla token kan du använda bakåtkompatibla och framåtkompatibla tokencacheminnen.

Mer information finns i Skrivbordsapp som anropar webb-API:er.

Mobilapp som anropar ett webb-API för en interaktiv användare

Precis som en skrivbordsapp anropar en mobilapp MSAL:s interaktiva metoder för tokenförvärv för att hämta en token för att anropa ett webb-API.

En mobilapp som anropar ett webb-API

MSAL iOS och MSAL Android använder systemets webbläsare som standard. Du kan dock instruera dem att använda den inbäddade webbvyn i stället. Det finns egenskaper som är beroende av mobilplattformen: Universell Windows-plattform (UWP), iOS eller Android.

Vissa scenarier, till exempel sådana som omfattar villkorsstyrd åtkomst som rör ett enhets-ID eller en enhetsregistrering, kräver att en asynkron meddelandekö installeras på enheten. Exempel på koordinatorer är Microsoft Företagsportal på Android och Microsoft Authenticator på Android och iOS. MSAL kan nu interagera med asynkrona meddelandeköer. Mer information om asynkrona mäklare finns i Använda koordinatorer på Android och iOS.

Mer information finns i Mobilapp som anropar webb-API:er.

Kommentar

En mobilapp som använder MSAL.iOS, MSAL. Android eller MSAL.NET på Xamarin kan ha appskyddsprinciper som tillämpas på den. Principerna kan till exempel förhindra att en användare kopierar skyddad text. Mobilappen hanteras av Intune och identifieras av Intune som en hanterad app. Mer information finns i Översikt över Microsoft Intune App SDK.

Intune App SDK är separat från MSAL-bibliotek och interagerar med Microsoft Entra-ID på egen hand.

Skyddat webb-API

Du kan använda Microsofts identitetsplattform slutpunkten för att skydda webbtjänster som appens RESTful-API. Ett skyddat webb-API anropas via en åtkomsttoken. Token hjälper till att skydda API:ets data och autentisera inkommande begäranden. Anroparen för ett webb-API lägger till en åtkomsttoken i auktoriseringshuvudet för en HTTP-begäran.

Om du vill skydda din ASP.NET- eller ASP.NET Core-webb-API verifierar du åtkomsttoken. För den här valideringen använder du ASP.NET JWT-mellanprogram. Verifieringen görs av IdentityModel-tilläggen för .NET-biblioteket och inte av MSAL.NET.

Mer information finns i Skyddat webb-API.

Webb-API som anropar ett annat webb-API åt en användare

För att ditt skyddade webb-API ska anropa ett annat webb-API för en användares räkning måste appen hämta en token för det underordnade webb-API:et. Sådana anrop kallas ibland tjänst-till-tjänst-anrop. Webb-API:er som anropar andra webb-API:er måste tillhandahålla anpassad cache-serialisering.

Ett webb-API som anropar ett annat webb-API

Mer information finns i Webb-API som anropar webb-API:er.

Daemon-app som anropar ett webb-API i daemonens namn

Appar som har långvariga processer eller som fungerar utan användarinteraktion behöver också ett sätt att komma åt säkra webb-API:er. En sådan app kan autentisera och hämta token med hjälp av appens identitet. Appen bevisar sin identitet med hjälp av en klienthemlighet eller ett certifikat.

Du kan skriva sådana daemon-appar som hämtar en token för den anropande appen med hjälp av anskaffningsmetoderna för klientautentiseringsuppgifter i MSAL. Dessa metoder kräver en klienthemlighet som du lägger till i appregistreringen i Microsoft Entra-ID. Appen delar sedan hemligheten med den som kallas daemon. Exempel på sådana hemligheter är programlösenord, certifikatkontroll och klientkontroll.

En daemonapp som anropas av andra appar och API:er

Mer information finns i Daemon-program som anropar webb-API:er.

Scenarier och autentiseringsflöden som stöds

Du använder autentiseringsflöden för att implementera de programscenarier som begär token. Det finns ingen en-till-en-mappning mellan programscenarier och autentiseringsflöden.

Scenarier som omfattar att hämta token mappas även till OAuth 2.0-autentiseringsflöden. Mer information finns i protokollen OAuth 2.0 och OpenID Anslut på Microsofts identitetsplattform.

Scenario Detaljerad genomgång av scenario OAuth 2.0-flöde och beviljande Målgrupp
Ensidesapp med autentiseringskod Enkelsidig app Auktoriseringskod med PKCE Arbets- eller skolkonton, personliga konton och Azure Active Directory B2C (Azure AD B2C)
Ensidesapp med implicit Enkelsidig app Implicit Arbets- eller skolkonton, personliga konton och Azure Active Directory B2C (Azure AD B2C)
Webbapp som loggar in användare Webbapp som loggar in användare Auktoriseringskod Arbets- eller skolkonton, personliga konton och Azure AD B2C
Webbapp som anropar webb-API:er Webbapp som anropar webb-API:er Auktoriseringskod Arbets- eller skolkonton, personliga konton och Azure AD B2C
Datorprogram som anropar webb-API:er Datorprogram som anropar webb-API:er Interaktiv med hjälp av auktoriseringskod med PKCE Arbets- eller skolkonton, personliga konton och Azure AD B2C
Integrerad Windows-autentisering Arbets- eller skolkonton
Lösenord för resursägare Arbets- eller skolkonton och Azure AD B2C
Webbläsarlöst program Enhetskod Arbets- eller skolkonton, personliga konton, men inte Azure AD B2C
Mobilapp att anropar webb-API:er Mobilapp som anropar webb-API:er Interaktiv med hjälp av auktoriseringskod med PKCE Arbets- eller skolkonton, personliga konton och Azure AD B2C
Lösenord för resursägare Arbets- eller skolkonton och Azure AD B2C
Daemon-app som anropar webb-API:er Daemon-app som anropar webb-API:er Klientautentiseringsuppgifter Endast appbehörigheter som inte har någon användare och som endast används i Microsoft Entra-organisationer
Webb-API som anropar webb-API:er Webb-API som anropar webb-API:er Å-vägnar Arbets- eller skolkonton och personliga konton

Scenarier och plattformar och språk som stöds

Microsoft Authentication Libraries stöder flera plattformar:

  • .NET
  • .NET Framework
  • Java
  • JavaScript
  • macOS
  • Ursprunglig Android
  • Ursprungligt iOS
  • Node.js
  • Python
  • Windows 10/UWP
  • Xamarin.iOS
  • Xamarin.Android

Du kan också använda olika språk för att skapa dina program.

Varje gång .NET nämns i Windows-kolumnen i följande tabell är .NET Framework också möjligt. Det senare utelämnas för att undvika att tabellen blir rörig.

Scenario Windows Linux Mac iOS Android
Enkelsidig app
Autentisering av ensidesapp
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js MSAL.js MSAL.js
MSAL.js
Enkelsidig app
Implicit ensidesapp
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js MSAL.js MSAL.js
MSAL.js
Webbapp som loggar in användare
Webbapp som loggar in användare
ASP.NET Core
ASP.NET Core MSAL-nod
MSAL-nod
ASP.NET Core
ASP.NET Core MSAL-nod
MSAL-nod
ASP.NET Core
ASP.NET Core MSAL-nod
MSAL-nod
Webbapp som anropar webb-API:er

Webbapp som anropar webb-API:er
ASP.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
Flask + MSAL Python MSAL-nod
MSAL-nod
ASP.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
Flask + MSAL Python MSAL-nod
MSAL-nod
ASP.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
Flask + MSAL Python MSAL-nod
MSAL-nod
Datorprogram som anropar webb-API:er

Datorprogram som anropar webb-API:erEnhetskodflöde
.NETMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL-nod
MSAL-nod
.NETMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL-nod
MSAL-nod
.NETMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python
MSAL-nod
MSAL-nod
iOS/Mål C eller swift MSAL.objc
Mobilapp som anropar webb-API:er
Mobilapp att anropar webb-API:er
UWP MSAL.NET Xamarin MSAL.NET iOS/Mål C eller swift MSAL.objc Android MSAL. Android
Daemon-app
Daemon-app
.NETMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL-nod
MSAL-nod
.NET MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL-nod
MSAL-nod
.NETMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL-nod
MSAL-nod
Webb-API som anropar webb-API:er

Webb-API som anropar webb-API:er
ASP.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL-nod
MSAL-nod
.NET
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL-nod
MSAL-nod
.NET
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL-nod
MSAL-nod

Mer information finns i Microsofts identitetsplattform autentiseringsbibliotek.

Nästa steg

Mer information om autentisering finns i: