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.

Scenarios with users

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

Scenarios with daemon apps

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)
A single-page application auth A single-page application implicit

Webbapp som loggar in en användare

A web app that signs in a user

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

A web app calling web APIs

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.

A desktop app calling a web 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.

Device code flow

Ä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.

A mobile app calling a web 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.

A web API calling another web 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.

A daemon app called by other apps and APIs

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
Single-Page App with Auth code Enkelsidig app Auktoriseringskod med PKCE Arbets- eller skolkonton, personliga konton och Azure Active Directory B2C (Azure AD B2C)
Single-Page App with Implicit Enkelsidig app Implicit Arbets- eller skolkonton, personliga konton och Azure Active Directory B2C (Azure AD B2C)
Web app that signs in users Webbapp som loggar in användare Auktoriseringskod Arbets- eller skolkonton, personliga konton och Azure AD B2C
Web app that calls web APIs Webbapp som anropar webb-API:er Auktoriseringskod Arbets- eller skolkonton, personliga konton och Azure AD B2C
Desktop app that calls web APIs 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
Browserless application Enhetskod Arbets- eller skolkonton, personliga konton, men inte Azure AD B2C
Mobile app that calls web APIs 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 that calls web APIs 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
Web API that calls web APIs 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 Core
  • .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 Core 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
Single-Page App Auth
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js MSAL.js MSAL.js
MSAL.js
Enkelsidig app
Single-Page App Implicit
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
Web app that signs-in users
ASP.NET Core
ASP.NET Core MSAL Node
MSAL-nod
ASP.NET Core
ASP.NET Core MSAL Node
MSAL-nod
ASP.NET Core
ASP.NET Core MSAL Node
MSAL-nod
Webbapp som anropar webb-API:er

Web app that calls web APIs
ASP.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
Flask + MSAL Python MSAL Node
MSAL-nod
ASP.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
Flask + MSAL Python MSAL Node
MSAL-nod
ASP.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
Flask + MSAL Python MSAL Node
MSAL-nod
Datorprogram som anropar webb-API:er

Desktop app that calls web APIsDevice code flow
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL-nod
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL-nod
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python
MSAL Node
MSAL-nod
iOS / Objective C or swift MSAL.objc
Mobilapp som anropar webb-API:er
Mobile app that calls web APIs
UWP MSAL.NET Xamarin MSAL.NET iOS / Objective C or swift MSAL.objc Android MSAL. Android
Daemon-app
Daemon app
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL-nod
.NET Core MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL-nod
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL-nod
Webb-API som anropar webb-API:er

Web API that calls web APIs
ASP.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL-nod
.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL-nod
.NET Core
ASP.NET Core + MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL-nod

Mer information finns i Microsofts identitetsplattform autentiseringsbibliotek.

Nästa steg

Mer information om autentisering finns i: