Реализация управления доступом на основе ролей
Управление доступом на основе ролей (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, сделайте следующее:
Создайте регистрацию приложения с ролями и назначениями приложения, как указано в выше в разделе Определение ролей для приложения.
Выполните один из следующих шагов:
Создайте новый проект веб-приложения 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
Выполните инструкции из статьи Краткое руководство. Добавление возможности входа в веб-приложение ASP.NET Core с помощью учетной записи Майкрософт, чтобы добавить в приложение механизм проверки подлинности.
Добавьте проверки ролей для действий контроллера, как указано в разделе Добавление проверок ролей.
Проверьте приложение, выполнив попытку получить доступ к одному из защищенных маршрутов MVC.
Веб-API ASP.NET Core
При реализации RBAC в веб-API ASP.NET Core в основном используется атрибут Authorize для указания ролей, которым нужно разрешить доступ к определенным контроллерам или действиям в контроллерах. Чтобы реализовать RBAC в веб-API ASP.NET Core, сделайте следующее:
Создайте регистрацию приложения с ролями и назначениями приложения, как указано в выше в разделе Определение ролей для приложения.
Выполните один из следующих шагов:
Создайте новый проект веб-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
Выполните инструкции из статьи Краткое руководство. Добавление возможности входа в веб-приложение ASP.NET Core с помощью учетной записи Майкрософт, чтобы добавить в приложение механизм проверки подлинности.
Добавьте проверки ролей для действий контроллера, как указано в разделе Добавление проверок ролей.
Вызовите 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 с помощью платформы удостоверений Майкрософт.
Следующие шаги
- Дополнительные сведения см. в статье Разрешения и согласие для платформы удостоверений Майкрософт.
- Дополнительные сведения см. в статье Управление доступом на основе ролей для разработчиков приложений.