Utforska Microsoft-autentiseringsbiblioteket
Med Microsoft Authentication Library (MSAL) kan utvecklare hämta säkerhetstoken från Microsofts identitetsplattform för att autentisera användare och få åtkomst till skyddade webb-API:er. Det kan användas för att ge säker åtkomst till Microsoft Graph, andra Microsoft-API:er, webb-API:er från tredje part eller ditt eget webb-API MSAL stöder många olika programarkitekturer och plattformar, inklusive .NET, JavaScript, Java, Python, Android och iOS.
MSAL ger dig många sätt att hämta token, med ett konsekvent API för många plattformar. Användning av MSAL medför följande fördelar:
- Du behöver inte använda OAuth-biblioteken eller koden direkt mot protokollet i ditt program.
- Hämtar token för en användares räkning eller för ett program (när det är tillämpligt för plattformen).
- Underhåller en tokencache och uppdaterar token åt dig när de är nära att upphöra att gälla. Du behöver inte hantera förfallodatum för token på egen hand.
- Hjälper dig att ange vilken målgrupp du vill att programmet ska logga in på.
- Hjälper dig att konfigurera ditt program från konfigurationsfiler.
- Hjälper dig att felsöka din app genom att exponera användbara undantag, loggning och telemetri.
Programtyper och scenarier
Inom MSAL kan en token hämtas från många programtyper: webbprogram, webb-API:er, ensidesappar (JavaScript), mobila och inbyggda program samt daemoner och program på serversidan. MSAL stöder för närvarande de plattformar och ramverk som anges i följande tabell.
Bibliotek | Plattformar och ramverk som stöds |
---|---|
MSAL för Android | Android |
MSAL Angular | Ensidesappar med Angular- och Angular.js-ramverk |
MSAL för iOS och macOS | iOS och macOS |
MSAL Go (förhandsversion) | Windows, macOS, Linux |
MSAL Java | Windows, macOS, Linux |
MSAL.js | JavaScript-/TypeScript-ramverk som Vue.js, Ember.js eller Durandal.js |
MSAL.NET | .NET Framework, .NET, .NET MAUI, WINUI, Xamarin Android, Xamarin iOS, Universell Windows-plattform |
MSAL-nod | Webbappar med Express, skrivbordsappar med Electron, plattformsoberoende konsolappar |
MSAL Python | Windows, macOS, Linux |
MSAL React | Ensidesappar med React- och React-baserade bibliotek (Next.js, Gatsby.js) |
Autentiseringsflöden
I följande tabell visas några av de olika autentiseringsflöden som tillhandahålls av Microsoft Authentication Library (MSAL). Dessa flöden kan användas i olika programscenarier.
Autentiseringsflöde | Gör | Programtyper som stöds |
---|---|---|
Auktoriseringskod | Användarens inloggning och åtkomst till webb-API:er för användarens räkning. | Desktop, Mobile, Ensidesapp (SPA) (kräver PKCE), Web |
Klientautentiseringsuppgifter | Åtkomst till webb-API:er med hjälp av själva programmets identitet. Används vanligtvis för server-till-server-kommunikation och automatiserade skript som inte kräver någon användarinteraktion. | Demon |
Enhetskod | Användarinloggning och åtkomst till webb-API:er för användarens räkning på indatabegränsade enheter som smarta TV-apparater och IoT-enheter. Används också av CLI-program (Command Line Interface). | Desktop, Mobile |
Implicit beviljande | Användarens inloggning och åtkomst till webb-API:er för användarens räkning. Det implicita beviljandeflödet rekommenderas inte längre – använd auktoriseringskod med PKCE i stället. | Ensidesapp (SPA), webb |
Å OBO:s vägnar | Åtkomst från ett "överordnat" webb-API till ett "nedströms"-webb-API för användarens räkning. Användarens identitet och delegerade behörigheter skickas vidare till det underordnade API:et från det överordnade API:et. | Webb-API |
Användarnamn/lösenord (ROPC) | Tillåter att ett program loggar in användaren genom att direkt hantera deras lösenord. ROPC-flödet rekommenderas INTE. | Desktop, Mobile |
Integrerad Windows-autentisering (IWA) | Tillåter att program på domän- eller Microsoft Entra-anslutna datorer hämtar en token tyst (utan interaktion med användargränssnittet från användaren). | Desktop, Mobile |
Offentliga klientprogram och konfidentiella klientprogram
Microsoft Authentication Library (MSAL) definierar två typer av klienter. offentliga klienter och konfidentiella klienter. En klient är en programvaruentitet som har en unik identifierare tilldelad av en identitetsprovider. Klienttyperna skiljer sig åt beroende på deras förmåga att autentisera säkert med auktoriseringsservern och att lagra känslig identitetsbevisinformation så att den inte kan nås eller kännas till för en användare inom ramen för dess åtkomst.
När vi undersöker den offentliga eller konfidentiella karaktären hos en viss klient utvärderar vi klientens förmåga att bevisa sin identitet för auktoriseringsservern. Detta är viktigt eftersom auktoriseringsservern måste kunna lita på klientens identitet för att kunna utfärda åtkomsttoken.
Offentliga klientprogram körs på enheter, till exempel skrivbords-, webbläsarlösa API:er, mobilappar eller webbläsarappar på klientsidan. De kan inte vara betrodda för att bevara programhemligheter på ett säkert sätt, så de kan bara komma åt webb-API:er för användarens räkning. Varje gång källan, eller kompilerad bytekod för en viss app, överförs var som helst där den kan läsas, demonteras eller på annat sätt inspekteras av ej betrodda parter. Eftersom de också bara stöder offentliga klientflöden och inte kan lagra konfigurationstidshemligheter kan de inte ha klienthemligheter.
Konfidentiella klientprogram körs på servrar, till exempel webbappar, webb-API-appar eller tjänst-/daemon-appar. De anses vara svåra att komma åt av användare eller angripare och kan därför lagra konfigurationstidshemligheter tillräckligt för att bekräfta bevis på dess identitet. Klient-ID:t exponeras via webbläsaren, men hemligheten skickas endast i den bakre kanalen och exponeras aldrig direkt.