Förstå delegerad åtkomst

När en användare loggar in på en app och använder den för att komma åt någon annan resurs, till exempel Microsoft Graph, måste appen först be om behörighet att komma åt den här resursen för användarens räkning. Det här vanliga scenariot kallas delegerad åtkomst.

Varför ska jag använda delegerad åtkomst?

Personer använder ofta olika program för att komma åt sina data från molntjänster. Någon kanske till exempel vill använda ett favoritprogram för PDF-läsare för att visa filer som lagras i deras OneDrive. Ett annat exempel kan vara ett företags verksamhetsspecifika program som kan hämta delad information om sina medarbetare så att de enkelt kan välja granskare för en begäran. I sådana fall måste klientprogrammet, PDF-läsaren eller företagets verktyg för godkännande av begäran ha behörighet att komma åt dessa data för den användare som loggade in på programmet.

Använd delegerad åtkomst när du vill låta en inloggad användare arbeta med sina egna resurser eller resurser som de kan komma åt. Oavsett om det är en administratör som konfigurerar principer för hela organisationen eller en användare som tar bort ett e-postmeddelande i inkorgen bör alla scenarier som involverar användaråtgärder använda delegerad åtkomst.

Diagram shows illustration of delegated access scenario.

Delegerad åtkomst är däremot vanligtvis ett dåligt val för scenarier som måste köras utan en inloggad användare, till exempel automatisering. Det kan också vara ett dåligt val för scenarier som omfattar åtkomst till många användares resurser, till exempel skydd mot dataförlust eller säkerhetskopior. Överväg att använda programåtkomst för de här typerna av åtgärder.

Begära omfång som en klientapp

Din app måste be användaren att bevilja ett specifikt omfång eller en uppsättning omfång för den resursapp som du vill komma åt. Omfång kan också kallas delegerade behörigheter. Dessa omfång beskriver vilka resurser och åtgärder som din app vill utföra för användarens räkning. Om du till exempel vill att din app ska visa användaren en lista över nyligen mottagna e-postmeddelanden och chattmeddelanden kan du be användaren att samtycka till Microsoft Graph Mail.Read och Chat.Read omfång.

När appen har begärt ett omfång måste en användare eller administratör bevilja den begärda åtkomsten. Konsumentanvändare med Microsoft-konton, till exempel Outlook.com- eller Xbox Live-konton, kan alltid bevilja omfång för sig själva. Organisationsanvändare med Microsoft Entra-konton kan eller kanske inte kan bevilja omfång, beroende på organisationens inställningar. Om en organisationsanvändare inte kan godkänna omfång direkt måste de be organisationens administratör att godkänna dem.

Följ alltid principen om lägsta behörighet: du bör aldrig begära omfång som appen inte behöver. Den här principen hjälper till att begränsa säkerhetsrisken om din app komprometteras och gör det enklare för administratörer att bevilja din app åtkomst. Om din app till exempel bara behöver lista de chattar som en användare tillhör men inte behöver visa chattmeddelandena själva, bör du begära det mer begränsade Microsoft Graph-omfånget Chat.ReadBasic i stället för Chat.Read. Mer information om openID-omfång finns i OpenID-omfång.

Utforma och publicera omfång för en resurstjänst

Om du skapar ett API och vill tillåta delegerad åtkomst för användarnas räkning måste du skapa omfång som andra appar kan begära. Dessa omfång bör beskriva de åtgärder eller resurser som är tillgängliga för klienten. Du bör överväga utvecklarscenarier när du utformar dina omfång.

Hur fungerar delegerad åtkomst?

Det viktigaste att komma ihåg om delegerad åtkomst är att både klientappen och den inloggade användaren måste ha rätt behörighet. Det räcker inte att bevilja ett omfång. Om klientappen inte har rätt omfång eller om användaren inte har tillräcklig behörighet för att läsa eller ändra resursen misslyckas anropet.

  • Auktorisering av klientapp – Klientappar auktoriseras genom att bevilja omfång. När en klientapp beviljas ett omfång av en användare eller administratör för att få åtkomst till en resurs registreras det beviljandet i Microsoft Entra-ID. Alla delegerade åtkomsttoken som begärs av klienten för att få åtkomst till resursen för den relevanta användarens räkning innehåller sedan anspråksvärdena för dessa omfång i anspråket scp . Resursappen kontrollerar det här anspråket för att avgöra om klientappen har beviljats rätt omfång för anropet.
  • Användarauktorisering – Användare har behörighet av den resurs som du anropar. Resursappar kan använda ett eller flera system för användarauktorisering, till exempel rollbaserad åtkomstkontroll, ägarskap/medlemskapsrelationer, åtkomstkontrollistor eller andra kontroller. Microsoft Entra-ID kontrollerar till exempel att en användare har tilldelats en apphanteringsroll eller en allmän administratörsroll innan de kan ta bort en organisations program, men tillåter även att alla användare tar bort program som de äger. På samma sätt kontrollerar SharePoint Online-tjänsten att en användare har rätt ägar- eller läsbehörighet för en fil innan användaren kan öppna den.

Exempel på delegerad åtkomst – OneDrive via Microsoft Graph

Ta följande som exempel:

Alice vill använda en klientapp för att öppna en fil som skyddas av ett resurs-API, Microsoft Graph. För användarauktorisering kontrollerar OneDrive-tjänsten om filen lagras på Alice enhet. Om den lagras på en annan användares enhet nekar OneDrive Alice begäran som obehörig eftersom Alice inte har rätt att läsa andra användares enheter.

För klientappsauktorisering kontrollerar OneDrive om klienten som anropar har beviljats omfånget Files.Read för den inloggade användarens räkning. I det här fallet är den inloggade användaren Alice. Om Files.Read inte har beviljats till appen för Alice kommer OneDrive också att misslyckas med begäran.

GET /drives/{id}/files/{id} Klientapp beviljad Files.Read omfång för Alice Klientappen har inte beviljats Files.Read omfång för Alice
Dokumentet finns i Alice OneDrive. 200 – Åtkomst beviljas. 403 – Obehörig. Alice (eller hennes administratör) har inte tillåtit den här klienten att läsa hennes filer.
Dokumentet finns i en annan användares OneDrive*. 403 – Obehörig. Alice har inte behörighet att läsa den här filen. Även om klienten har beviljats Files.Read bör den nekas när den agerar för Alice räkning. 403 – Obehörig. Alice har inte behörighet att läsa den här filen och klienten får inte heller läsa filer som hon har åtkomst till.

Exemplet som anges är förenklat för att illustrera delegerad auktorisering. OneDrive-tjänsten för produktion stöder många andra åtkomstscenarier, till exempel delade filer.

Se även