Programtyper för Microsofts identitetsplattform
Microsofts identitetsplattform stöder autentisering för olika moderna apparkitekturer, som alla baseras på branschstandardprotokollen OAuth 2.0 eller OpenID Connect. Den här artikeln beskriver de typer av appar som du kan skapa med hjälp av Microsofts identitetsplattform, oavsett vilket språk eller plattform du föredrar. Informationen är utformad för att hjälpa dig att förstå scenarier på hög nivå innan du börjar arbeta med koden i programscenarierna.
Grunderna
Du måste registrera varje app som använder Microsofts identitetsplattform i administrationscentret för Microsoft Entra Appregistreringar. Appregistreringsprocessen samlar in och tilldelar dessa värden för din app:
- Ett program-ID (klient)-ID som unikt identifierar din app
- En omdirigerings-URI som du kan använda för att dirigera tillbaka svar till din app
- Några andra scenariospecifika värden, till exempel kontotyper som stöds
Mer information finns i hur du registrerar en app.
När appen har registrerats kommunicerar appen med Microsofts identitetsplattform genom att skicka begäranden till slutpunkten. Vi tillhandahåller ramverk och bibliotek med öppen källkod som hanterar information om dessa begäranden. Du har också möjlighet att implementera autentiseringslogik själv genom att skapa begäranden till dessa slutpunkter:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
https://login.microsoftonline.com/common/oauth2/v2.0/token
Apptyperna som stöds av Microsofts identitetsplattform är;
- Ensidesapp (SPA)
- Webbapp
- Webb-API
- Mobila och inbyggda appar
- Tjänst, daemon, skript
Ensidesappar
Många moderna appar har en ensidesapp (SPA) som främst skrivs i JavaScript, ofta med ett ramverk som Angular, React eller Vue. Microsofts identitetsplattform stöder dessa appar med hjälp av OpenID Connect-protokollet för autentisering och en av två typer av auktoriseringsbidrag som definierats av OAuth 2.0. Använd auktoriseringskodflödet med PKCE när du utvecklar SPA:er. Det här flödet är säkrare än det implicita flödet, vilket inte längre rekommenderas. Mer information finns i föredrar autentiseringskodflödet.
Flödesdiagrammet visar OAuth 2.0-auktoriseringskodens beviljandeflöde (med information om PKCE utelämnat), där appen tar emot en kod från Microsofts identitetsplattform authorize
slutpunkten och löser in den mot en åtkomsttoken och en uppdateringstoken med hjälp av webbförfrågningar mellan webbplatser. För SPA:er är åtkomsttoken giltig i 1 timme och när den har upphört att gälla måste du begära en annan kod med hjälp av uppdateringstoken. Förutom åtkomsttoken begärs vanligtvis en id_token
som representerar den inloggade användaren i klientprogrammet också via samma flöde och/eller en separat OpenID Connect-begäran (visas inte här).
Om du vill se detta i praktiken läser du Snabbstart: Logga in användare i en ensidesapp (SPA) och anropa Microsoft Graph API med JavaScript.
Webbappar
För webbappar (.NET, PHP, Java, Ruby, Python, Node) som användaren kommer åt via en webbläsare kan du använda OpenID Connect för användarinloggning. I OpenID Connect tar webbappen emot en ID-token. En ID-token är en säkerhetstoken som verifierar användarens identitet och ger information om användaren i form av anspråk:
// Partial raw ID token
abC1dEf2Ghi3jkL4mNo5Pqr6stU7vWx8Yza9...
// Partial content of a decoded ID token
{
"name": "Casey Jensen",
"email": "casey.jensen@onmicrosoft.com",
"oid": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
...
}
Mer information om olika typer av token som används i Microsofts identitetsplattform finns i referensen för åtkomsttoken och id_token referens.
I webbserverappar utför inloggningsautentiseringsflödet följande övergripande steg:
Du kan säkerställa användarens identitet genom att verifiera ID-token med en offentlig signeringsnyckel som tas emot från Microsofts identitetsplattform. En sessionscookie har angetts, som kan användas för att identifiera användaren vid efterföljande sidbegäranden.
Läs mer genom att skapa en ASP.NET Core-webbapp som loggar in användare i följande självstudieserie i flera delar
Förutom enkel inloggning kan en webbserverapp behöva komma åt en annan webbtjänst, till exempel ett REST-API (Representational State Transfer). I det här fallet deltar webbserverappen i ett kombinerat OpenID Connect- och OAuth 2.0-flöde med hjälp av OAuth 2.0-auktoriseringskodflödet. Mer information om det här scenariot finns i vårt kodexempel.
Webb-API:er
Du kan använda Microsofts identitetsplattform för att skydda webbtjänster, till exempel appens RESTful-webb-API. Webb-API:er kan implementeras på flera plattformar och språk. De kan också implementeras med hjälp av HTTP-utlösare i Azure Functions. I stället för ID-token och sessionscookies använder ett webb-API en OAuth 2.0-åtkomsttoken för att skydda sina 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, så här:
GET /api/items HTTP/1.1
Host: www.mywebapi.com
Authorization: Bearer abC1dEf2Ghi3jkL4mNo5Pqr6stU7vWx8Yza9...
Accept: application/json
...
Webb-API:et använder åtkomsttoken för att verifiera API-anroparens identitet och för att extrahera information om anroparen från anspråk som kodas i åtkomsttoken. Mer information om olika typer av token som används i Microsofts identitetsplattform finns i referensen för åtkomsttoken och ID-tokenreferensen.
Ett webb-API kan ge användarna möjlighet att välja eller välja bort specifika funktioner eller data genom att exponera behörigheter, även kallade omfång. För att en anropande app ska få behörighet till ett omfång måste användaren godkänna omfånget under ett flöde. Microsofts identitetsplattform ber användaren om behörighet och registrerar sedan behörigheter i alla åtkomsttoken som webb-API:et tar emot. Webb-API:et verifierar de åtkomsttoken som den tar emot vid varje anrop och utför auktoriseringskontroller.
Ett webb-API kan ta emot åtkomsttoken från alla typer av appar, inklusive webbserverappar, skrivbords- och mobilappar, ensidesappar, daemoner på serversidan och även andra webb-API:er. Flödet på hög nivå för ett webb-API ser ut så här:
Om du vill lära dig hur du skyddar ett webb-API med hjälp av OAuth2-åtkomsttoken kan du läsa kodexemplen för webb-API:et i självstudien om skyddat webb-API.
I många fall måste även webb-API:er göra utgående begäranden till andra underordnade webb-API:er som skyddas av Microsofts identitetsplattform. För att göra det kan webb-API:er dra nytta av OBO-flödet (On-Behalf-Of), som gör att webb-API:et kan utbyta en inkommande åtkomsttoken för att en annan åtkomsttoken ska användas i utgående begäranden. Mer information finns i flödet Microsofts identitetsplattform och OAuth 2.0 On-Behalf-Of.
Mobila och inbyggda appar
Enhetsinstallerade appar, till exempel mobilappar och skrivbordsappar, behöver ofta komma åt serverdelstjänster eller webb-API:er som lagrar data och utför funktioner åt en användare. Dessa appar kan lägga till inloggning och auktorisering till serverdelstjänster med hjälp av OAuth 2.0-auktoriseringskodflödet.
I det här flödet får appen en auktoriseringskod från Microsofts identitetsplattform när användaren loggar in. Auktoriseringskoden representerar appens behörighet att anropa serverdelstjänster för den användare som är inloggad. Appen kan byta auktoriseringskoden i bakgrunden mot en OAuth 2.0-åtkomsttoken och en uppdateringstoken. Appen kan använda åtkomsttoken för att autentisera till webb-API:er i HTTP-begäranden och använda uppdateringstoken för att hämta nya åtkomsttoken när äldre åtkomsttoken upphör att gälla.
Not
Om programmet använder standardsystemwebbvyn kontrollerar du informationen om funktionen "Bekräfta min inloggning" och felkoden AADSTS50199
i Felkoder för Microsoft Entra-autentisering och auktorisering.
Server, daemon och skript
Appar som har långvariga processer eller som fungerar utan interaktion med en användare behöver också ett sätt att komma åt skyddade resurser, till exempel webb-API:er. Dessa appar kan autentisera och hämta token med hjälp av appens identitet, i stället för en användares delegerade identitet, med OAuth 2.0-klientens autentiseringsuppgifter. Du kan bevisa appens identitet med hjälp av en klienthemlighet eller ett certifikat. Mer information finns i Daemon-konsolprogrammet för .NET med hjälp av Microsofts identitetsplattform.
I det här flödet interagerar appen direkt med /token
slutpunkten för att få åtkomst:
Om du vill skapa en daemonapp kan du läsa dokumentationen om klientautentiseringsuppgifter eller prova en .NET-exempelapp.
Se även
Nu när du är bekant med de typer av program som stöds av Microsofts identitetsplattform kan du läsa mer om OAuth 2.0 och OpenID Connect för att få en förståelse för de protokollkomponenter som används av de olika scenarierna.