Добавление ролей приложения в приложение и их получение в токене

Управление доступом на основе ролей (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, выполните следующие действия.

  1. Войдите на портал Azure.

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

  3. Найдите и выберите Azure Active Directory.

  4. В разделе Управление выберите Регистрация приложений, а затем выберите приложение, в котором нужно определить роли приложения.

  5. Выберите Роли приложения, а затем Создать роль приложения.

    Панель ролей регистрации приложения на портале Azure

  6. На панели Создание роли приложения введите параметры для роли. В таблице, следующей за изображением, описывается каждый параметр.

    Роли регистрации приложения создают контекстную область на портале Azure

    Поле Описание Пример
    Отображаемое имя Отображаемое имя для роли приложения, которое присутствует на страницах согласия администратора и назначения приложения. Это значение может содержать пробелы. Survey Writer
    Разрешенные типы элементов Указывает, может ли эта роль приложения назначаться пользователям, приложениям или обоим.

    Если доступно applications, роли приложения отображаются в виде разрешений приложения в разделе Управление регистрации приложения >Разрешения API > Добавить разрешение > Мои интерфейсы API > Выберите API > Разрешения приложения.
    Users/Groups
    Значение Определяет значение утверждения ролей, которое приложение должно ожидать в токене. Это значение должно точно совпадать со строкой, на которую ссылается код приложения. Это значение не может содержать пробелы. Survey.Create
    Описание Более подробное описание роли приложения, отображаемое при назначении приложения администратора и предоставлении согласия. Writers can create surveys.
    Хотите включить эту роль приложения? Указывает, включена ли роль приложения. Чтобы удалить роль приложения, снимите этот флажок и примените изменения, прежде чем выполнять операцию удаления. Флажок установлен
  7. Щелкните Применить, чтобы сохранить изменения.

Назначение ролей для пользователей и групп

После добавления в приложение ролей приложения, этим ролям можно назначать пользователей и группы. Назначение пользователей и групп ролям можно выполнить через пользовательский интерфейс на портале или программным путем, используя Microsoft Graph. Если пользователи, назначенные различным ролям приложений, входят в приложение, их токены будут иметь их назначенные роли в утверждении roles.

Чтобы назначать пользователей и группы ролям с помощью портала Azure, сделайте следующее.

  1. Войдите на портал Azure.
  2. В Azure Active Directory выберите Корпоративные приложения в левой области меню навигации.
  3. Щелкните Все приложения, чтобы просмотреть полный список приложений. Если приложение не отображается в списке, используйте фильтры в верхней части списка Все приложения, чтобы сократить список, или прокрутите его вниз и найдите приложение.
  4. Выберите приложение, в котором для ролей необходимо назначить пользователей или группы безопасности.
  5. В разделе Управление выберите Пользователи и группы.
  6. Щелкните Добавить пользователя, чтобы открыть область Добавление назначения.
  7. В области Добавление назначения щелкните Пользователи и группы. Отобразится список пользователей и групп безопасности. В списке можно выполнить поиск определенного пользователя или группы, а также выбрать несколько пользователей и групп.
  8. Выбрав пользователей и группы, нажмите кнопку Выбрать для продолжения.
  9. Выберите Выбрать роль в области Добавление назначения. Появятся все роли, определенные для приложения.
  10. Выберите роль и выберите кнопку Выбрать.
  11. Выберите Назначить, чтобы завершить назначение пользователей и групп для приложения.

Убедитесь, что добавленные пользователи и группы отображаются в списке Пользователи и группы.

Назначение ролей приложения для приложений

После добавления ролей в свое приложение можно назначить роль клиентскому приложению на портале Azure или программно с помощью Microsoft Graph.

При назначении ролей для приложения создаются разрешения приложения. Разрешения приложения обычно используются управляющими приложениями или серверными службами, которые должны пройти проверку подлинности и сделать полномочные вызовы API собственными, без взаимодействия с пользователем.

Чтобы назначить роли для приложения с помощью портала Azure:

  1. Войдите на портал Azure.
  2. В Azure Active Directory выберите Регистрация приложения в левой области меню навигации.
  3. Щелкните Все приложения, чтобы просмотреть полный список приложений. Если приложение не отображается в списке, используйте фильтры в верхней части списка Все приложения, чтобы сократить список, или прокрутите его вниз и найдите приложение.
  4. Выберите приложение, которому необходимо назначить роль.
  5. Выберите Разрешения API>Добавить разрешение.
  6. Перейдите на вкладку Мои API и выберите приложение, для которого вы определили роли приложения.
  7. Выберите Разрешения приложений.
  8. Выберите роли, которые требуется назначить.
  9. Нажмите кнопку Добавить разрешения, чтобы завершить добавление ролей.

Вновь добавленные роли должны появиться в области Разрешения API регистрации приложения.

Поскольку это разрешения приложения, а не делегированные разрешения, администратор должен предоставить согласие на использование ролей для приложения.

  1. В области Разрешений API регистрации приложения выберите Предоставить согласие администратора для <имя арендатора>.
  2. Выберите Да при появлении запроса на предоставление согласия с запрошенными разрешениями.

Столбец Состояние должен отражать, что согласие предоставлено для <имя арендатора>.

Сценарий использования для ролей приложений

Если вы реализуете бизнес-логику роли приложения, которая выполняет вход для пользователей в вашем сценарии приложения, сначала определите роли приложения в разделе Регистрации приложения. Затем администратор назначает их пользователям и группам в области Корпоративные приложения. Эти назначенные роли приложений включаются в любой маркер, выданный для вашего приложения, как маркеры доступа, когда приложение является API-интерфейсом, вызываемым приложением, или маркеры идентификатора, когда приложение выполняет вход для пользователя.

Если вы реализуете бизнес-логику роли приложения в сценарии API-интерфейса с вызовом приложения, то получаете две регистрации приложения. Одна регистрация приложения предназначена для приложения, а вторая — для API. В этом случае определите роли приложения и назначьте их пользователю или группе в регистрации приложения, относящейся к API. Когда пользователь проходит проверку подлинности в приложении и запрашивает маркер идентификатора для вызова API, в маркер идентификатора включается утверждение ролей. Следующим шагом является добавление кода в веб-API для проверки этих ролей при вызове API.

Чтобы узнать, как добавить авторизацию в ваш веб-API, см. статью Защищенный веб-API: проверка областей и ролей приложений.

Роли приложений и группы

Несмотря на то что для авторизации можно использовать роли или группы приложений, основные различия между ними могут повлиять на то, что вы решите использовать в сценарии.

Роли приложения Группы
Они относятся к приложению и определяются в регистрации приложения. Они перемещаются с приложением. Они относятся не к приложению, а к клиенту Azure AD.
Роли приложений удаляются при удалении их регистрации приложения. Группы не изменяются, даже если приложение удалено.
Указывается в утверждении roles. Предоставляется в утверждении groups.

Разработчики могут использовать роли приложения для управления тем, может ли пользователь входить в приложение, или приложение может получить маркер доступа для веб-API. Чтобы расширить этот элемент управления безопасностью до групп, разработчики и администраторы могут также назначать группы безопасности ролям приложений.

Разработчики предпочитают использовать роли приложений, когда им нужно описывать и контролировать параметры авторизации в своих приложениях. Например, приложение, использующее группы для авторизации, будет прерываться в следующем клиенте, так как идентификатор группы и имя могут отличаться. Приложение, использующее роли приложения, остается безопасным. Фактически, назначение групп ролям приложений широко используется в приложениях SaaS по тем же причинам, так как оно позволяет подготовить приложение SaaS в нескольких арендаторах.

Дальнейшие действия

Дополнительные сведения о ролях приложений см. в следующих ресурсах.