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 Connect. 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:
- Skaffa säkerhetstoken för ett skyddat webb-API: Vi rekommenderar att du använder Microsoft Authentication Library (MSAL) som utvecklats och stöds av Microsoft.
- Skydda ett webb-API eller en webbapp: En utmaning med att skydda dessa resurser är att validera säkerhetstoken. På vissa plattformar erbjuder Microsoft mellanprogrambibliotek.
Med användare eller utan användare
De flesta autentiseringsscenarier hämtar token för inloggade användare.
Det finns dock även daemon-appar. I dessa scenarier hämtar program token för sig själva utan användare.
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) |
---|---|
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 Connect-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
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.
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.
Ä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.
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.
Mer information finns i Mobilapp som anropar webb-API:er.
Kommentar
En mobilapp som använder MSAL iOS eller MSAL Android kan ha appskyddsprinciper tillämpade 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.
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.
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 OAuth 2.0- och OpenID Connect-protokoll på Microsofts identitetsplattform.
Scenario | Detaljerad genomgång av scenario | OAuth 2.0-flöde och beviljande | Målgrupp |
---|---|---|---|
Enkelsidig app | Auktoriseringskod med PKCE | Arbets- eller skolkonton, personliga konton och Azure Active Directory B2C (Azure AD B2C) | |
Enkelsidig app | Underförstådd | Arbets- eller skolkonton, personliga konton och Azure Active Directory B2C (Azure AD B2C) | |
Webbapp som loggar in användare | Auktoriseringskod | Arbets- eller skolkonton, personliga konton och Azure AD B2C | |
Webbapp som anropar webb-API:er | Auktoriseringskod | Arbets- eller skolkonton, personliga konton och Azure AD B2C | |
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ös app | Enhetskod | Arbets- eller skolkonton, personliga konton, men inte Azure AD B2C | |
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 | 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 | Å-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
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 |
MSAL.js |
MSAL.js |
MSAL.js |
MSAL.js | MSAL.js |
Enkelsidig app |
MSAL.js |
MSAL.js |
MSAL.js |
MSAL.js | MSAL.js |
Webbapp som loggar in användare |
ASP.NET Core MSAL-nod |
ASP.NET Core MSAL-nod |
ASP.NET Core MSAL-nod |
||
Webbapp som anropar webb-API:er |
ASP.NET Core + MSAL.NET MSAL Java Flask + MSAL Python MSAL-nod |
ASP.NET Core + MSAL.NET MSAL Java Flask + MSAL Python MSAL-nod |
ASP.NET Core + MSAL.NET MSAL Java Flask + MSAL Python MSAL-nod |
||
Datorprogram som anropar webb-API:er |
MSAL.NET MSAL Java MSAL Python MSAL-nod |
MSAL.NET MSAL Java MSAL Python MSAL-nod |
MSAL.NET MSAL Java MSAL Python MSAL-nod MSAL.objc |
||
Mobilapp som anropar webb-API:er |
MSAL.NET MSAL.NET | MSAL.objc | MSAL. Android | ||
Daemon-app |
MSAL.NET MSAL Java MSAL Python MSAL-nod |
MSAL.NET MSAL Java MSAL Python MSAL-nod |
MSAL.NET MSAL Java MSAL Python MSAL-nod |
||
Webb-API som anropar webb-API:er |
ASP.NET Core + MSAL.NET MSAL Java MSAL Python MSAL-nod |
ASP.NET Core + MSAL.NET MSAL Java MSAL Python MSAL-nod |
ASP.NET Core + MSAL.NET MSAL Java MSAL Python MSAL-nod |
Mer information finns i Microsofts identitetsplattform autentiseringsbibliotek.
Nästa steg
Mer information om autentisering finns i: