Implementare il controllo degli accessi in base al ruolo

Il controllo degli accessi in base al ruolo consente a utenti o gruppi di avere autorizzazioni specifiche per accedere e gestire le risorse. In genere, l'implementazione del controllo degli accessi in base al ruolo per proteggere una risorsa include la protezione di un'applicazione Web, un'applicazione a pagina singola o un'API. Questa protezione può essere per l'intera applicazione o l'API, aree e funzionalità specifiche o metodi API. Per ulteriori informazioni di base sull'autorizzazione, vedere Informazioni di base sull’autorizzazione.

Come descritto in Controllo degli accessi in base al ruolo per gli sviluppatori di applicazioni, esistono tre modi per implementare il controllo degli accessi in base al ruolo usando Microsoft Identity Platform:

  • Ruoli app: usando la funzionalità Ruoli app in un'applicazione usando la logica all'interno dell'applicazione per interpretare le assegnazioni di ruolo dell'app in ingresso.
  • Gruppi: usare le assegnazioni di gruppo di un'identità in ingresso usando la logica all'interno dell'applicazione per interpretare le assegnazioni di gruppo.
  • Archivio dati personalizzato: recuperare e interpretare le assegnazioni di ruolo usando la logica all'interno dell'applicazione.

L'approccio preferito consiste nell'usare Ruoli dell'app perché è il più semplice da implementare. Questo approccio è supportato direttamente dagli SDK usati per la creazione di app che usano Microsoft Identity Platform. Per altre informazioni su come scegliere un approccio, vedere Scegliere un approccio.

Definire i ruoli dell'app

Il primo passaggio per l'implementazione del controllo degli accessi in base al ruolo per un'applicazione consiste nel definire i ruoli dell'app e assegnarvi utenti o gruppi. Questo processo è descritto in Procedura: Aggiungere ruoli dell'app all'applicazione e riceverli nel token. Dopo aver definito i ruoli dell'app e aver assegnato utenti o gruppi, accedere alle assegnazioni di ruolo nei token in arrivo nell'applicazione e agire di conseguenza su di essi.

Implementare il controllo degli accessi in base al ruolo in ASP.NET Core

ASP.NET Core supporta l'aggiunta del controllo degli accessi in base al ruolo a un'applicazione Web o a un'API Web di ASP.NET Core. L'aggiunta del controllo degli accessi in base al ruolo consente di semplificare l'implementazione usando i controlli dei ruoli con l'attributo ASP.NET Core Authorize. È anche possibile usare il supporto di ASP.NET Core per i controlli dei ruoli basati su criteri.

Applicazione Web ASP.NET Core MVC

L'implementazione del controllo degli accessi in base al ruolo in un'applicazione Web MVC core ASP.NET è semplice. Implica principalmente l'uso dell'attributo Authorize per specificare quali ruoli devono essere autorizzati ad accedere a controller o azioni specifici nei controller. Seguire questa procedura per implementare il controllo degli accessi in base al ruolo in un'applicazione MVC ASP.NET Core:

  1. Creare una registrazione dell'applicazione con ruoli e assegnazioni dell'app come descritto in precedenza in Definire i ruoli dell'app.

  2. Completa uno dei seguenti passaggi:

    • Creare un nuovo progetto di applicazione Web MVC ASP.NET Core usando l'interfaccia della riga di comando dotnet. Specificare il flag --auth con SingleOrg per l'autenticazione a tenant singolo o MultiOrg per l'autenticazione multi-tenant, il flag --client-id con il client se dalla registrazione dell'applicazione e il flag --tenant-id con il tenant se dal tenant di Microsoft Entra:

      dotnet new mvc --auth SingleOrg --client-id <YOUR-APPLICATION-CLIENT-ID> --tenant-id <TENANT-ID>  
      
    • Aggiungere le librerie Microsoft.Identity.Web e Microsoft.Identity.Web.UI a un progetto MVC di ASP.NET Core esistente:

      dotnet add package Microsoft.Identity.Web 
      dotnet add package Microsoft.Identity.Web.UI 
      
  3. Seguire le istruzioni specificate in Avvio rapido: Aggiungere l'accesso con Microsoft a un'app Web ASP.NET Core per aggiungere l'autenticazione all'applicazione.

  4. Aggiungere controlli dei ruoli per le azioni del controller come descritto in Aggiunta di controlli dei ruoli.

  5. Testare l'applicazione provando ad accedere a una delle route MVC protette.

API Web ASP.NET Core

L'implementazione del controllo degli accessi in base al ruolo in un'API Web di ASP.NET Core prevede principalmente l'uso dell'attributo Authorize per specificare quali ruoli devono essere autorizzati ad accedere a controller o azioni specifici nei controller. Seguire questa procedura per implementare il controllo degli accessi in base al ruolo nell'API Web di ASP.NET Core:

  1. Creare una registrazione dell'applicazione con ruoli e assegnazioni dell'app come descritto in precedenza in Definire i ruoli dell'app.

  2. Completa uno dei seguenti passaggi:

    • Creare un nuovo progetto API Web MVC ASP.NET Core usando l'interfaccia della riga di comando dotnet. Specificare il flag --auth con SingleOrg per l'autenticazione a tenant singolo o MultiOrg per l'autenticazione multi-tenant, il flag --client-id con il client se dalla registrazione dell'applicazione e il flag --tenant-id con il tenant se dal tenant di Microsoft Entra:

      dotnet new webapi --auth SingleOrg --client-id <YOUR-APPLICATION-CLIENT-ID> --tenant-id <TENANT-ID> 
      
    • Aggiungere le librerie Microsoft.Identity.Web e Swashbuckle.AspNetCore a un progetto di API Web di ASP.NET Core esistente:

      dotnet add package Microsoft.Identity.Web
      dotnet add package Swashbuckle.AspNetCore 
      
  3. Seguire le istruzioni specificate in Avvio rapido: Aggiungere l'accesso con Microsoft a un'app Web ASP.NET Core per aggiungere l'autenticazione all'applicazione.

  4. Aggiungere controlli dei ruoli per le azioni del controller come descritto in Aggiunta di controlli dei ruoli.

  5. Chiamare l'API da un’applicazione client. Per un campione end-to-end, vedere Applicazione a pagina singola Angular che chiama ASP.NET API Web Core e l'uso dei ruoli dell'app per implementare il Servizio di controllo di accesso in base al ruolo.

Implementare il controllo degli accessi in base al ruolo in altre piattaforme

Spa angular con MsalGuard

L'implementazione del controllo degli accessi in base al ruolo in un'applicazione a pagina singola angular prevede l'uso di Microsoft Authentication Library per Angular per autorizzare l'accesso alle route Angular contenute nell'applicazione. Un esempio è illustrato nel campione Abilitare l'applicazione a pagina singola Angular per l'accesso degli utenti e chiamare le API con Microsoft Identity Platform.

Nota

Le implementazioni del controllo degli accessi in base al ruolo lato client devono essere associate al controllo degli accessi in base al ruolo lato server per impedire alle applicazioni non autorizzate di accedere alle risorse sensibili.

Node.js con applicazione Express

L'implementazione del controllo degli accessi in base al ruolo in un Node.js con applicazione Express prevede l'uso di MSAL per autorizzare l'accesso alle route Express contenute nell'applicazione. Un esempio è illustrato nel campione Abilitare l'app Web Node.js per accedere agli utenti e chiamare le API con Microsoft Identity Platform.

Passaggi successivi