Поделиться через


Реализация управления доступом на основе ролей

Управление доступом на основе ролей (RBAC) позволяет пользователям или группам иметь определенные разрешения на доступ к ресурсам и управление ими. Как правило, реализация RBAC для защиты ресурса подразумевает также защиту веб-приложения, одностраничного приложения (SPA) или API. Эта защита может распространяться как на все приложение или API, так и на конкретные области, функции или методы API. Дополнительную информацию см. в статье Основы авторизации.

Как упоминалось в статье Управление доступом на основе ролей для разработчиков приложений, есть три способа реализации RBAC с помощью платформы удостоверений Майкрософт:

  • Роли приложения. Использование функции ролей приложения в приложении с помощью внутренней логики приложения для интерпретации входящих назначений ролей приложения.
  • Группы. Использование назначений групп для входящего удостоверения с помощью внутренней логики приложения для интерпретации назначений групп.
  • Пользовательское хранилище данных. Получение и интерпретация назначений ролей с помощью внутренней логики приложения.

Предпочтительный подход — использование ролей приложения, так как его проще всего реализовать. Этот подход поддерживают непосредственно пакеты SDK, применяемые для создания приложений, которые использует платформа удостоверений Майкрософт. Дополнительные сведения см. в разделе Выбор подхода.

Определение ролей приложения

Первый шаг реализации RBAC для приложения — определение ролей приложения, и их назначение пользователям или группам. Этот процесс описан в документе Практическое руководство. Добавление ролей приложения в приложение и их получение в маркере. После определения ролей приложения и назначения ролей пользователям или группам можно получить доступ к назначениям ролей в маркерах, поступающих в приложение, и выполнить соответствующие действия.

Реализация RBAC в ASP.NET Core

ASP.NET Core поддерживает добавление RBAC в веб-приложение или веб-API ASP.NET Core. Добавление RBAC упрощает реализацию за счет проверок ролей с атрибутом Authorize ASP.NET Core. Кроме того, поддержку ASP.NET Core можно использовать для проверки ролей на основе политик.

Веб-приложение MVC для ASP.NET Core

Реализовать RBAC в веб-приложении MVC для ASP.NET Core достаточно просто. В основном при этом используется атрибут Authorize для указания ролей, которым нужно разрешить доступ к определенным контроллерам или действиям в контроллерах. Чтобы реализовать RBAC в приложении MVC для ASP.NET Core, сделайте следующее:

  1. Создайте регистрацию приложения с ролями и назначениями приложения, как указано в выше в разделе Определение ролей для приложения.

  2. Выполните один из следующих шагов:

    • Создайте новый проект веб-приложения MVC для ASP.NET Core с помощью dotnet cli. --auth Укажите флаг с проверкой подлинности одного клиента или MultiOrg для многотенантной проверки подлинности, --client-id флаг с SingleOrg клиентом, если из регистрации приложения, и --tenant-id флаг с клиентом, если из клиента Microsoft Entra:

      dotnet new mvc --auth SingleOrg --client-id <YOUR-APPLICATION-CLIENT-ID> --tenant-id <TENANT-ID>  
      
    • Добавьте библиотеки Microsoft.Identity.Web и Microsoft.Identity.Web.UI в существующий проект MVC для ASP.NET Core:

      dotnet add package Microsoft.Identity.Web 
      dotnet add package Microsoft.Identity.Web.UI 
      
  3. Выполните инструкции из статьи Краткое руководство. Добавление возможности входа в веб-приложение ASP.NET Core с помощью учетной записи Майкрософт, чтобы добавить в приложение механизм проверки подлинности.

  4. Добавьте проверки ролей для действий контроллера, как указано в разделе Добавление проверок ролей.

  5. Проверьте приложение, выполнив попытку получить доступ к одному из защищенных маршрутов MVC.

Веб-API ASP.NET Core

При реализации RBAC в веб-API ASP.NET Core в основном используется атрибут Authorize для указания ролей, которым нужно разрешить доступ к определенным контроллерам или действиям в контроллерах. Чтобы реализовать RBAC в веб-API ASP.NET Core, сделайте следующее:

  1. Создайте регистрацию приложения с ролями и назначениями приложения, как указано в выше в разделе Определение ролей для приложения.

  2. Выполните один из следующих шагов:

    • Создайте новый проект веб-API MVC для ASP.NET Core с помощью DotNet CLI. --auth Укажите флаг с проверкой подлинности одного клиента или MultiOrg для многотенантной проверки подлинности, --client-id флаг с SingleOrg клиентом, если из регистрации приложения, и --tenant-id флаг с клиентом, если из клиента Microsoft Entra:

      dotnet new webapi --auth SingleOrg --client-id <YOUR-APPLICATION-CLIENT-ID> --tenant-id <TENANT-ID> 
      
    • Добавьте библиотеки Microsoft.Identity.Web и Swashbuckle.AspNetCore в существующий проект веб-API ASP.NET Core:

      dotnet add package Microsoft.Identity.Web
      dotnet add package Swashbuckle.AspNetCore 
      
  3. Выполните инструкции из статьи Краткое руководство. Добавление возможности входа в веб-приложение ASP.NET Core с помощью учетной записи Майкрософт, чтобы добавить в приложение механизм проверки подлинности.

  4. Добавьте проверки ролей для действий контроллера, как указано в разделе Добавление проверок ролей.

  5. Вызовите API из клиентского приложения. Сведения о вызове одностраничного приложения Angular ASP.NET Веб-API и использовании ролей приложений для реализации контроль доступа на основе ролей для завершения примера.

Реализация RBAC на других платформах

Angular SPA

Реализация RBAC в spa Angular включает использование библиотеки проверки подлинности Майкрософт для Angular для авторизации доступа к маршрутам Angular , содержащимся в приложении. Пример показан в примерах MSAL Angular версии 3.

Примечание.

Реализации RBAC на стороне клиента должны сопровождаться реализациями RBAC на стороне сервера, чтобы предотвратить доступ неавторизованных приложений к конфиденциальным ресурсам.

Node.js с приложением Express

Реализация RBAC в Node.js с приложением Express включает авторизацию доступа к маршрутам Express, содержащимся в приложении, с помощью MSAL. Пример приведен в руководстве Реализация входа пользователей и вызова API в веб-приложении Node.js с помощью платформы удостоверений Майкрософт.

Следующие шаги