Implementar controle de acesso baseado em função
O controle de acesso baseado em função (RBAC) permite que usuários ou grupos tenham permissões específicas para acessar e gerenciar recursos. Normalmente, a implementação do RBAC para proteger um recurso inclui a proteção de um aplicativo Web, um aplicativo de página única (SPA) ou uma API. Essa proteção pode ser para todo o aplicativo ou API, áreas e recursos específicos ou métodos de API. Para obter mais informações sobre os conceitos básicos de autorização, consulte Noções básicas de autorização.
Conforme discutido em Controle de acesso baseado em função para desenvolvedores de aplicativos, há três maneiras de implementar o RBAC usando a plataforma de identidade da Microsoft:
- Funções de Aplicativo – usando o recurso Funções de Aplicativo em um aplicativo usando lógica dentro do aplicativo para interpretar atribuições de função de aplicativo de entrada.
- Grupos – usando atribuições de grupo de uma identidade de entrada usando lógica dentro do aplicativo para interpretar as atribuições de grupo.
- Armazenamento de dados personalizado – recupere e interprete atribuições de função usando lógica dentro do aplicativo.
A abordagem preferida é usar funções de aplicativo, pois é a mais fácil de implementar. Essa abordagem é suportada diretamente pelos SDKs que são usados na criação de aplicativos que utilizam a plataforma de identidade da Microsoft. Para obter mais informações sobre como escolher uma abordagem, consulte Escolher uma abordagem.
Definir funções do aplicativo
A primeira etapa para implementar o RBAC para um aplicativo é definir as funções do aplicativo para ele e atribuir usuários ou grupos a ele. Esse processo é descrito em Como: Adicionar funções de aplicativo ao seu aplicativo e recebê-las no token. Depois de definir as funções do aplicativo e atribuir usuários ou grupos a elas, acesse as atribuições de função nos tokens que entram no aplicativo e aja sobre elas de acordo.
Implementar RBAC no ASP.NET Core
O ASP.NET Core suporta a adição de RBAC a um aplicativo Web ASP.NET Core ou API da Web. Adicionar RBAC permite uma implementação fácil usando verificações de função com o atributo ASP.NET Core Author. Também é possível usar o suporte do ASP.NET Core para verificações de função baseadas em políticas.
ASP.NET Aplicação Web Core MVC
A implementação do RBAC em um aplicativo Web ASP.NET Core MVC é simples. Envolve principalmente o uso do atributo Authorize para especificar quais funções devem ter permissão para acessar controladores ou ações específicas nos controladores. Siga estas etapas para implementar o RBAC em um aplicativo MVC ASP.NET Core:
Crie um registro de aplicativo com funções e atribuições de aplicativo, conforme descrito em Definir funções de aplicativo acima.
Efetue um dos seguintes passos:
Crie um novo projeto de aplicativo Web ASP.NET Core MVC usando a cli dotnet. Especifique o
--auth
sinalizadorSingleOrg
com para autenticação de locatário único ouMultiOrg
para autenticação multilocatário, o--client-id
sinalizador com o cliente se do registro do aplicativo e o--tenant-id
sinalizador com o locatário se do locatário do Microsoft Entra:dotnet new mvc --auth SingleOrg --client-id <YOUR-APPLICATION-CLIENT-ID> --tenant-id <TENANT-ID>
Adicione as bibliotecas Microsoft.Identity.Web e Microsoft.Identity.Web.UI a um projeto MVC ASP.NET Core existente:
dotnet add package Microsoft.Identity.Web dotnet add package Microsoft.Identity.Web.UI
Siga as instruções especificadas em Guia de início rápido: adicionar entrada com a Microsoft a um aplicativo Web ASP.NET Core para adicionar autenticação ao aplicativo.
Adicione verificações de função nas ações do controlador, conforme descrito em Adicionando verificações de função.
Teste o aplicativo tentando acessar uma das rotas MVC protegidas.
API Web do ASP.NET Core
A implementação do RBAC em uma API da Web ASP.NET Core envolve principalmente a utilização do atributo Authorize para especificar quais funções devem ter permissão para acessar controladores ou ações específicas nos controladores. Siga estas etapas para implementar o RBAC na API da Web ASP.NET Core:
Crie um registro de aplicativo com funções e atribuições de aplicativo, conforme descrito em Definir funções de aplicativo acima.
Efetue um dos seguintes passos:
Crie um novo projeto de API da Web ASP.NET Core MVC usando a cli dotnet. Especifique o
--auth
sinalizadorSingleOrg
com para autenticação de locatário único ouMultiOrg
para autenticação multilocatário, o--client-id
sinalizador com o cliente se do registro do aplicativo e o--tenant-id
sinalizador com o locatário se do locatário do Microsoft Entra:dotnet new webapi --auth SingleOrg --client-id <YOUR-APPLICATION-CLIENT-ID> --tenant-id <TENANT-ID>
Adicione as bibliotecas Microsoft.Identity.Web e Swashbuckle.AspNetCore a um projeto de API Web ASP.NET Core existente:
dotnet add package Microsoft.Identity.Web dotnet add package Swashbuckle.AspNetCore
Siga as instruções especificadas em Guia de início rápido: adicionar entrada com a Microsoft a um aplicativo Web ASP.NET Core para adicionar autenticação ao aplicativo.
Adicione verificações de função nas ações do controlador, conforme descrito em Adicionando verificações de função.
Chame a API de um aplicativo cliente. Consulte Aplicativo angular de página única chamando ASP.NET API Web principal e usando funções de aplicativo para implementar o controle de acesso baseado em função para obter um exemplo de ponta a ponta.
Implementar RBAC em outras plataformas
Angular SPA
A implementação do RBAC em um SPA Angular envolve o uso da Biblioteca de Autenticação da Microsoft para Angular para autorizar o acesso às rotas Angular contidas no aplicativo. Um exemplo é mostrado nas amostras do MSAL Angular v3.
Nota
As implementações RBAC do lado do cliente devem ser emparelhadas com o RBAC do lado do servidor para impedir que aplicativos não autorizados acessem recursos confidenciais.
Node.js com a aplicação Express
A implementação do RBAC em um Node.js com aplicativo expresso envolve o uso do MSAL para autorizar o acesso às rotas Express contidas no aplicativo. Um exemplo é mostrado em Habilitar seu aplicativo Web Node.js para entrar usuários e chamar APIs com o exemplo de plataforma de identidade da Microsoft.
Próximos passos
- Leia mais sobre permissões e consentimento na plataforma de identidade da Microsoft.
- Leia mais sobre controle de acesso baseado em função para desenvolvedores de aplicativos.