Добавление ролей приложения в приложение и их получение в токене
Управление доступом на основе ролей (RBAC) — это популярный механизм для принудительного применения авторизации в приложениях. С помощью RBAC администраторы могут предоставлять разрешения ролям, а не отдельным пользователям или группам. Затем администратор может назначить роли для различных пользователей и групп, чтобы контролировать доступ к соответствующему содержимому и функциональным возможностям.
Используя RBAC с ролями приложения и утверждениями ролей, разработчики могут безопасно обеспечить авторизацию в своих приложениях, приложив немного усилий.
Другой подход заключается в использовании групп и утверждений групп Azure Active Directory (Azure AD), как показано в примере кода active-directory-aspnetcore-webapp-openidconnect-v2 на сайте GitHub. Azure AD группы и роли приложений не являются взаимоисключающими; их можно использовать вместе, чтобы обеспечить еще более детальное управление доступом.
Объявление ролей для приложения
Роли приложения определяются на портале Azure в процессе регистрации приложения. Роли приложения определяются в регистрации приложения, представляющего службу, приложение или интерфейс API. Когда пользователь входит в приложение, Azure AD выдает утверждение для каждой roles
роли, предоставленной пользователю или субъекту-службе. Это может использоваться для реализации авторизации на основе утверждения. Роли приложения могут назначаться пользователю или группе пользователей. Роли приложения также могут назначаться субъекту-службе для другого приложения или субъекту-службе для управляемого удостоверения.
В настоящее время, если вы добавите субъект-службу в группу, а затем назначите роль приложения этой группе, Azure AD не добавит утверждение roles
в токены, которые он выдает.
Роли приложения объявляются с помощью пользовательского интерфейса ролей приложений в портал Azure:
Количество добавляемых ролей относится к ограничениям манифеста приложения, которое принудительно устанавливается службой Azure AD. Дополнительные сведения об этих ограничениях см. в разделе Ограничения манифеста в справочнике манифеста приложения службы Azure Active Directory.
Пользовательский интерфейс ролей приложения
Чтобы создать роль приложения с помощью пользовательского интерфейса портала Azure, выполните следующие действия.
Войдите на портал Azure.
Если у вас есть доступ к нескольким арендаторам, в верхнем меню используйте
фильтр Каталоги и подписки, чтобы выбрать арендатор с регистрацией приложения, к которой вы хотите добавить роль приложения.
Найдите и выберите Azure Active Directory.
В разделе Управление выберите Регистрация приложений, а затем выберите приложение, в котором нужно определить роли приложения.
Выберите Роли приложения, а затем Создать роль приложения.
На панели Создание роли приложения введите параметры для роли. В таблице, следующей за изображением, описывается каждый параметр.
Поле Описание Пример Отображаемое имя Отображаемое имя для роли приложения, которое присутствует на страницах согласия администратора и назначения приложения. Это значение может содержать пробелы. Survey Writer
Разрешенные типы элементов Указывает, может ли эта роль приложения назначаться пользователям, приложениям или обоим.
Если доступноapplications
, роли приложения отображаются в виде разрешений приложения в разделе Управление регистрации приложения >Разрешения API > Добавить разрешение > Мои интерфейсы API > Выберите API > Разрешения приложения.Users/Groups
Значение Определяет значение утверждения ролей, которое приложение должно ожидать в токене. Это значение должно точно совпадать со строкой, на которую ссылается код приложения. Это значение не может содержать пробелы. Survey.Create
Описание Более подробное описание роли приложения, отображаемое при назначении приложения администратора и предоставлении согласия. Writers can create surveys.
Хотите включить эту роль приложения? Указывает, включена ли роль приложения. Чтобы удалить роль приложения, снимите этот флажок и примените изменения, прежде чем выполнять операцию удаления. Флажок установлен Щелкните Применить, чтобы сохранить изменения.
Назначение ролей для пользователей и групп
После добавления в приложение ролей приложения, этим ролям можно назначать пользователей и группы. Назначение пользователей и групп ролям можно выполнить через пользовательский интерфейс на портале или программным путем, используя Microsoft Graph. Если пользователи, назначенные различным ролям приложений, входят в приложение, их токены будут иметь их назначенные роли в утверждении roles
.
Чтобы назначать пользователей и группы ролям с помощью портала Azure, сделайте следующее.
- Войдите на портал Azure.
- В Azure Active Directory выберите Корпоративные приложения в левой области меню навигации.
- Щелкните Все приложения, чтобы просмотреть полный список приложений. Если приложение не отображается в списке, используйте фильтры в верхней части списка Все приложения, чтобы сократить список, или прокрутите его вниз и найдите приложение.
- Выберите приложение, в котором для ролей необходимо назначить пользователей или группы безопасности.
- В разделе Управление выберите Пользователи и группы.
- Щелкните Добавить пользователя, чтобы открыть область Добавление назначения.
- В области Добавление назначения щелкните Пользователи и группы. Отобразится список пользователей и групп безопасности. В списке можно выполнить поиск определенного пользователя или группы, а также выбрать несколько пользователей и групп.
- Выбрав пользователей и группы, нажмите кнопку Выбрать для продолжения.
- Выберите Выбрать роль в области Добавление назначения. Появятся все роли, определенные для приложения.
- Выберите роль и выберите кнопку Выбрать.
- Выберите Назначить, чтобы завершить назначение пользователей и групп для приложения.
Убедитесь, что добавленные пользователи и группы отображаются в списке Пользователи и группы.
Назначение ролей приложения для приложений
После добавления ролей в свое приложение можно назначить роль клиентскому приложению на портале Azure или программно с помощью Microsoft Graph.
При назначении ролей для приложения создаются разрешения приложения. Разрешения приложения обычно используются управляющими приложениями или серверными службами, которые должны пройти проверку подлинности и сделать полномочные вызовы API собственными, без взаимодействия с пользователем.
Чтобы назначить роли для приложения с помощью портала Azure:
- Войдите на портал Azure.
- В Azure Active Directory выберите Регистрация приложения в левой области меню навигации.
- Щелкните Все приложения, чтобы просмотреть полный список приложений. Если приложение не отображается в списке, используйте фильтры в верхней части списка Все приложения, чтобы сократить список, или прокрутите его вниз и найдите приложение.
- Выберите приложение, которому необходимо назначить роль.
- Выберите Разрешения API>Добавить разрешение.
- Перейдите на вкладку Мои API и выберите приложение, для которого вы определили роли приложения.
- Выберите Разрешения приложений.
- Выберите роли, которые требуется назначить.
- Нажмите кнопку Добавить разрешения, чтобы завершить добавление ролей.
Вновь добавленные роли должны появиться в области Разрешения API регистрации приложения.
Предоставление согласия администратора
Поскольку это разрешения приложения, а не делегированные разрешения, администратор должен предоставить согласие на использование ролей для приложения.
- В области Разрешений API регистрации приложения выберите Предоставить согласие администратора для <имя арендатора>.
- Выберите Да при появлении запроса на предоставление согласия с запрошенными разрешениями.
Столбец Состояние должен отражать, что согласие предоставлено для <имя арендатора>.
Сценарий использования для ролей приложений
Если вы реализуете бизнес-логику роли приложения, которая выполняет вход для пользователей в вашем сценарии приложения, сначала определите роли приложения в разделе Регистрации приложения. Затем администратор назначает их пользователям и группам в области Корпоративные приложения. Эти назначенные роли приложений включаются в любой маркер, выданный для вашего приложения, как маркеры доступа, когда приложение является API-интерфейсом, вызываемым приложением, или маркеры идентификатора, когда приложение выполняет вход для пользователя.
Если вы реализуете бизнес-логику роли приложения в сценарии API-интерфейса с вызовом приложения, то получаете две регистрации приложения. Одна регистрация приложения предназначена для приложения, а вторая — для API. В этом случае определите роли приложения и назначьте их пользователю или группе в регистрации приложения, относящейся к API. Когда пользователь проходит проверку подлинности в приложении и запрашивает маркер идентификатора для вызова API, в маркер идентификатора включается утверждение ролей. Следующим шагом является добавление кода в веб-API для проверки этих ролей при вызове API.
Чтобы узнать, как добавить авторизацию в ваш веб-API, см. статью Защищенный веб-API: проверка областей и ролей приложений.
Роли приложений и группы
Несмотря на то что для авторизации можно использовать роли или группы приложений, основные различия между ними могут повлиять на то, что вы решите использовать в сценарии.
Роли приложения | Группы |
---|---|
Они относятся к приложению и определяются в регистрации приложения. Они перемещаются с приложением. | Они относятся не к приложению, а к клиенту Azure AD. |
Роли приложений удаляются при удалении их регистрации приложения. | Группы не изменяются, даже если приложение удалено. |
Указывается в утверждении roles . |
Предоставляется в утверждении groups . |
Разработчики могут использовать роли приложения для управления тем, может ли пользователь входить в приложение, или приложение может получить маркер доступа для веб-API. Чтобы расширить этот элемент управления безопасностью до групп, разработчики и администраторы могут также назначать группы безопасности ролям приложений.
Разработчики предпочитают использовать роли приложений, когда им нужно описывать и контролировать параметры авторизации в своих приложениях. Например, приложение, использующее группы для авторизации, будет прерываться в следующем клиенте, так как идентификатор группы и имя могут отличаться. Приложение, использующее роли приложения, остается безопасным. Фактически, назначение групп ролям приложений широко используется в приложениях SaaS по тем же причинам, так как оно позволяет подготовить приложение SaaS в нескольких арендаторах.
Дальнейшие действия
Дополнительные сведения о ролях приложений см. в следующих ресурсах.
- Примеры кода в GitHub
- Справочная документация
- Видео. Реализация авторизации в приложениях с помощью платформы удостоверений Майкрософт (1:01:15)