Implementowanie kontroli dostępu opartej na rolach

Kontrola dostępu oparta na rolach (RBAC) umożliwia użytkownikom lub grupom posiadanie określonych uprawnień dostępu do zasobów i zarządzanie nimi. Zazwyczaj implementowanie kontroli dostępu opartej na rolach w celu ochrony zasobu obejmuje ochronę aplikacji internetowej, aplikacji jednostronicowej (SPA) lub interfejsu API. Ta ochrona może dotyczyć całej aplikacji lub interfejsu API, określonych obszarów i funkcji lub metod interfejsu API. Aby uzyskać więcej informacji na temat podstaw autoryzacji, zobacz Podstawy autoryzacji.

Jak opisano w temacie Kontrola dostępu oparta na rolach dla deweloperów aplikacji, istnieją trzy sposoby implementowania kontroli dostępu opartej na rolach przy użyciu Platforma tożsamości Microsoft:

  • Role aplikacji — używanie funkcji Role aplikacji w aplikacji przy użyciu logiki w aplikacji w celu interpretowania przychodzących przypisań ról aplikacji.
  • Grupy — używanie przypisań grup tożsamości przychodzącej przy użyciu logiki w aplikacji w celu zinterpretowania przypisań grup.
  • Niestandardowy magazyn danych — pobieranie i interpretowanie przypisań ról przy użyciu logiki w aplikacji.

Preferowaną metodą jest użycie ról aplikacji, ponieważ jest to najłatwiejsze do zaimplementowania. Takie podejście jest obsługiwane bezpośrednio przez zestawy SDK używane w tworzeniu aplikacji korzystających z Platforma tożsamości Microsoft. Aby uzyskać więcej informacji na temat wybierania podejścia, zobacz Wybieranie podejścia.

Definiowanie ról aplikacji

Pierwszym krokiem implementacji kontroli dostępu opartej na rolach dla aplikacji jest zdefiniowanie dla niej ról aplikacji i przypisanie do niej użytkowników lub grup. Ten proces został opisany w temacie Instrukcje: dodawanie ról aplikacji do aplikacji i odbieranie ich w tokenie. Po zdefiniowaniu ról aplikacji i przypisaniu do nich użytkowników lub grup uzyskaj dostęp do przypisań ról w tokenach przychodzących do aplikacji i odpowiednio na nich działa.

Implementowanie kontroli dostępu opartej na rolach w technologii ASP.NET Core

ASP.NET Core obsługuje dodawanie kontroli dostępu opartej na rolach do aplikacji internetowej lub internetowego interfejsu API platformy ASP.NET Core. Dodanie kontroli dostępu opartej na rolach umożliwia łatwą implementację przy użyciu kontroli ról z atrybutem ASP.NET Core Authorize . Istnieje również możliwość użycia obsługi ASP.NET Core na potrzeby kontroli ról opartych na zasadach.

aplikacja internetowa ASP.NET Core MVC

Implementowanie kontroli dostępu opartej na rolach w aplikacji internetowej platformy ASP.NET Core MVC jest proste. Obejmuje ona głównie użycie atrybutu Autoryzowanie w celu określenia, które role powinny mieć dostęp do określonych kontrolerów lub akcji w kontrolerach. Wykonaj następujące kroki, aby zaimplementować kontrolę dostępu opartą na rolach w aplikacji ASP.NET Core MVC:

  1. Utwórz rejestrację aplikacji z rolami i przypisaniami aplikacji zgodnie z opisem w sekcji Definiowanie ról aplikacji powyżej.

  2. Wykonaj jeden z następujących kroków:

    • Utwórz nowy projekt aplikacji internetowej platformy ASP.NET Core MVC przy użyciu interfejsu wiersza polecenia dotnet. Określ flagę --auth dla SingleOrg uwierzytelniania pojedynczej dzierżawy lub MultiOrg uwierzytelniania wielodostępnego, --client-id flagę z klientem, jeśli z rejestracji aplikacji i --tenant-id flagę z dzierżawą, jeśli z dzierżawy firmy Microsoft Entra:

      dotnet new mvc --auth SingleOrg --client-id <YOUR-APPLICATION-CLIENT-ID> --tenant-id <TENANT-ID>  
      
    • Dodaj biblioteki Microsoft.Identity.Web i Microsoft.Identity.Web.UI do istniejącego projektu ASP.NET Core MVC:

      dotnet add package Microsoft.Identity.Web 
      dotnet add package Microsoft.Identity.Web.UI 
      
  3. Postępuj zgodnie z instrukcjami określonymi w przewodniku Szybki start: dodawanie logowania z firmą Microsoft do aplikacji internetowej ASP.NET Core w celu dodania uwierzytelniania do aplikacji.

  4. Dodaj kontrole ról dla akcji kontrolera zgodnie z opisem w temacie Dodawanie kontroli ról.

  5. Przetestuj aplikację, próbując uzyskać dostęp do jednej z chronionych tras MVC.

Internetowy interfejs API platformy ASP.NET Core

Implementowanie kontroli dostępu opartej na rolach w internetowym interfejsie API platformy ASP.NET Core obejmuje głównie użycie atrybutu Authorize w celu określenia, które role powinny mieć dostęp do określonych kontrolerów lub akcji w kontrolerach. Wykonaj następujące kroki, aby zaimplementować kontrolę dostępu opartą na rolach w internetowym interfejsie API platformy ASP.NET Core:

  1. Utwórz rejestrację aplikacji z rolami i przypisaniami aplikacji zgodnie z opisem w sekcji Definiowanie ról aplikacji powyżej.

  2. Wykonaj jeden z następujących kroków:

    • Utwórz nowy projekt internetowego interfejsu API platformy ASP.NET Core MVC przy użyciu interfejsu wiersza polecenia dotnet. Określ flagę --auth dla SingleOrg uwierzytelniania pojedynczej dzierżawy lub MultiOrg uwierzytelniania wielodostępnego, --client-id flagę z klientem, jeśli z rejestracji aplikacji i --tenant-id flagę z dzierżawą, jeśli z dzierżawy firmy Microsoft Entra:

      dotnet new webapi --auth SingleOrg --client-id <YOUR-APPLICATION-CLIENT-ID> --tenant-id <TENANT-ID> 
      
    • Dodaj biblioteki Microsoft.Identity.Web i Swashbuckle.AspNetCore do istniejącego projektu internetowego interfejsu API platformy ASP.NET Core:

      dotnet add package Microsoft.Identity.Web
      dotnet add package Swashbuckle.AspNetCore 
      
  3. Postępuj zgodnie z instrukcjami określonymi w przewodniku Szybki start: dodawanie logowania z firmą Microsoft do aplikacji internetowej ASP.NET Core w celu dodania uwierzytelniania do aplikacji.

  4. Dodaj kontrole ról dla akcji kontrolera zgodnie z opisem w temacie Dodawanie kontroli ról.

  5. Wywoływanie interfejsu API z aplikacji klienckiej. Zobacz Angular jednostronicowa aplikacja wywołująca ASP.NET Core internetowy interfejs API i używająca ról aplikacji do implementowania kontroli dostępu opartej na rolach w celu uzyskania kompleksowego przykładu.

Implementowanie kontroli dostępu opartej na rolach na innych platformach

Angular SPA przy użyciu msalGuard

Implementowanie kontroli dostępu opartej na rolach w spa angular obejmuje użycie biblioteki Microsoft Authentication Library for Angular do autoryzowania dostępu do tras Angular zawartych w aplikacji. Przykład pokazano w aplikacji jednostronicowej Enable your Angular to sign-in users and call APIs with the Platforma tożsamości Microsoft sample (Włączanie jednostronicowej aplikacji Angular w celu logowania użytkowników i wywoływania interfejsów API przy użyciu przykładu Platforma tożsamości Microsoft).

Uwaga

Implementacje kontroli dostępu opartej na rolach po stronie klienta powinny być sparowane z kontrolą dostępu opartą na rolach po stronie serwera, aby uniemożliwić nieautoryzowanym aplikacjom dostęp do poufnych zasobów.

Node.js z aplikacją Express

Implementowanie kontroli dostępu opartej na rolach w Node.js za pomocą aplikacji ekspresowej obejmuje użycie biblioteki MSAL do autoryzowania dostępu do tras express zawartych w aplikacji. Przykład pokazano w przykładzie Enable your Node.js web app to sign-in users and call APIs with the Platforma tożsamości Microsoft sample (Włącz aplikację internetową Node.js logowanie użytkowników i wywoływanie interfejsów API za pomocą przykładu Platforma tożsamości Microsoft).

Następne kroki