Dela via


Implementera rollbaserad åtkomstkontroll

Med rollbaserad åtkomstkontroll (RBAC) kan användare eller grupper ha specifika behörigheter för att komma åt och hantera resurser. Normalt omfattar implementering av RBAC för att skydda en resurs att skydda antingen ett webbprogram, ett ensidesprogram (SPA) eller ett API. Det här skyddet kan vara för hela programmet eller API:et, specifika områden och funktioner eller API-metoder. Mer information om grunderna i auktorisering finns i Grundläggande om auktorisering.

Som beskrivs i Rollbaserad åtkomstkontroll för programutvecklare finns det tre sätt att implementera RBAC med hjälp av Microsofts identitetsplattform:

  • Approller – använda funktionen Approller i ett program med hjälp av logik i programmet för att tolka inkommande approlltilldelningar.
  • Grupper – använda grupptilldelningar av en inkommande identitet med hjälp av logik i programmet för att tolka grupptilldelningarna.
  • Custom Data Store – hämta och tolka rolltilldelningar med hjälp av logik i programmet.

Den bästa metoden är att använda approller eftersom det är det enklaste att implementera. Den här metoden stöds direkt av de SDK:er som används för att skapa appar som använder Microsofts identitetsplattform. Mer information om hur du väljer en metod finns i Välj en metod.

Definiera approller

Det första steget för att implementera RBAC för ett program är att definiera approllerna för det och tilldela användare eller grupper till det. Den här processen beskrivs i Så här lägger du till approller i ditt program och tar emot dem i token. När du har definierat approllerna och tilldelat användare eller grupper till dem kan du komma åt rolltilldelningarna i de token som kommer in i programmet och agera på dem i enlighet med detta.

Implementera RBAC i ASP.NET Core

ASP.NET Core har stöd för att lägga till RBAC i ett ASP.NET Core-webbprogram eller webb-API. Genom att lägga till RBAC kan du enkelt implementera med hjälp av rollkontroller med attributet ASP.NET Core Authorize . Det går också att använda ASP.NET Cores stöd för principbaserade rollkontroller.

ASP.NET Core MVC-webbapp

Det är enkelt att implementera RBAC i en ASP.NET Core MVC-webbapp. Det handlar främst om att använda attributet Auktorisera för att ange vilka roller som ska få åtkomst till specifika kontrollanter eller åtgärder i kontrollanterna. Följ dessa steg för att implementera RBAC i ett ASP.NET Core MVC-program:

  1. Skapa en programregistrering med approller och tilldelningar enligt beskrivningen i Definiera approller ovan.

  2. Gör något av följande:

    • Skapa ett nytt ASP.NET Core MVC-webbprogramprojekt med dotnet cli. --auth Ange flaggan med antingen SingleOrg för enskild klientautentisering eller MultiOrg för autentisering med flera klientorganisationer, --client-id flaggan med klienten om från programregistreringen --tenant-id och flaggan med klientorganisationen om från Microsoft Entra-klientorganisationen:

      dotnet new mvc --auth SingleOrg --client-id <YOUR-APPLICATION-CLIENT-ID> --tenant-id <TENANT-ID>  
      
    • Lägg till biblioteken Microsoft.Identity.Web och Microsoft.Identity.Web.UI i ett befintligt ASP.NET Core MVC-projekt:

      dotnet add package Microsoft.Identity.Web 
      dotnet add package Microsoft.Identity.Web.UI 
      
  3. Följ anvisningarna i Snabbstart: Lägg till inloggning med Microsoft i en ASP.NET Core-webbapp för att lägga till autentisering i programmet.

  4. Lägg till rollkontroller på kontrollantåtgärderna enligt beskrivningen i Lägga till rollkontroller.

  5. Testa programmet genom att försöka komma åt någon av de skyddade MVC-vägarna.

ASP.NET Core-webb-API

Implementering av RBAC i ett ASP.NET Core-webb-API omfattar främst användning av attributet Auktorisera för att ange vilka roller som ska tillåtas att komma åt specifika kontrollanter eller åtgärder i kontrollanterna. Följ dessa steg för att implementera RBAC i webb-API:et ASP.NET Core:

  1. Skapa en programregistrering med approller och tilldelningar enligt beskrivningen i Definiera approller ovan.

  2. Gör något av följande:

    • Skapa ett nytt ASP.NET Core MVC-webb-API-projekt med dotnet cli. --auth Ange flaggan med antingen SingleOrg för enskild klientautentisering eller MultiOrg för autentisering med flera klientorganisationer, --client-id flaggan med klienten om från programregistreringen --tenant-id och flaggan med klientorganisationen om från Microsoft Entra-klientorganisationen:

      dotnet new webapi --auth SingleOrg --client-id <YOUR-APPLICATION-CLIENT-ID> --tenant-id <TENANT-ID> 
      
    • Lägg till biblioteken Microsoft.Identity.Web och Swashbuckle.AspNetCore i ett befintligt ASP.NET Core-webb-API-projekt:

      dotnet add package Microsoft.Identity.Web
      dotnet add package Swashbuckle.AspNetCore 
      
  3. Följ anvisningarna i Snabbstart: Lägg till inloggning med Microsoft i en ASP.NET Core-webbapp för att lägga till autentisering i programmet.

  4. Lägg till rollkontroller på kontrollantåtgärderna enligt beskrivningen i Lägga till rollkontroller.

  5. Anropa API:et från ett klientprogram. Se Angular-ensidesprogram som anropar ASP.NET Core-webb-API och använda approller för att implementera rollbaserad åtkomstkontroll för ett exempel från slutpunkt till slutpunkt.

Implementera RBAC på andra plattformar

Angular SPA med MsalGuard

Implementering av RBAC i ett Angular SPA innebär användning av Microsoft Authentication Library for Angular för att auktorisera åtkomst till Angular-vägarna i programmet. Ett exempel visas i programmet Aktivera ensidesappen Angular för att logga in användare och anropa API:er med Microsofts identitetsplattform exempel.

Kommentar

RBAC-implementeringar på klientsidan bör paras ihop med RBAC på serversidan för att förhindra att obehöriga program får åtkomst till känsliga resurser.

Node.js med Express-program

Implementering av RBAC i en Node.js med expressprogram innebär användning av MSAL för att auktorisera åtkomst till Express-vägarna i programmet. Ett exempel visas i webbappen Aktivera din Node.js för att logga in användare och anropa API:er med Microsofts identitetsplattform exempel.

Nästa steg