Обновление запрошенных разрешений приложения в идентификаторе Microsoft Entra

При настройке приложения с идентификатором Microsoft Entra разработчики могут запрашивать доступ к данным из других приложений и служб с помощью разрешений. Они могут запрашивать разрешения, добавляя статические разрешения в манифест приложения или динамически запрашивая разрешения во время выполнения. Затем пользователи или администраторы могут предоставить разрешения во время согласия, позволяя приложению получать доступ к данным, которым он нужен.

По мере развития функциональных возможностей приложения ресурсы, необходимые для доступа к изменениям. Эти изменения могут включать новые функции, устранять ненужный доступ или заменять разрешения с высоким уровнем привилегий менее привилегированными. В этой статье объясняется, как обновить разрешения для запросов приложения с помощью Центра администрирования Microsoft Entra и вызовов API Microsoft Graph.

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

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

Необходимые условия

Чтобы обновить запрошенные разрешения приложения, вам потребуется:

  • Учетная запись пользователя Microsoft Entra. Если у вас еще нет учетной записи, создайте бесплатную учетную запись.
  • Одна из следующих ролей: администратор приложений, администратор облачных приложений. Владелец приложения, который не является администратором, может обновить запрошенные разрешения приложения.

Сценарии обновления разрешений

В следующем разделе перечислены три основных сценария, в которых необходимо обновить разрешения для запросов приложения:

  • Добавление разрешений в приложение
  • Удаление неиспользуемых разрешений из приложения
  • Замена разрешения

Заметка

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

Добавление разрешений в приложение

Вы можете добавить разрешение, если у вашего приложения есть новая функциональность, требующая разрешения, которое ранее не требуется.

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

Статическое согласие — это способ запроса разрешений от пользователей или администраторов во время регистрации приложения, а не во время выполнения. Для статического согласия приложение должно объявить все необходимые разрешения в области Регистрация приложений в Центре администрирования Microsoft Entra. С помощью Центра администрирования Microsoft Entra можно обновить разрешения только для статического согласия. Дополнительные сведения о различных типах согласия см. в разделе "Типы согласия". Чтобы узнать, как обновить разрешения для динамического согласия, перейдите на вкладку Microsoft Graph этой статьи.

В этом разделе описано, как добавить разрешения в статическое согласие.

Вы можете добавить разрешения на статическое согласие двумя разными способами в Центре администрирования Microsoft Entra:

Вариант 1. Добавление разрешений в область разрешений API

  1. Войдите в Центр администрирования Microsoft Entra как минимум администратор облачных приложений или владелец приложения.
  2. Перейдите к приложениям >identity>Регистрация приложений> All.
  3. Найдите регистрацию приложения, к которой нужно добавить разрешения, и выберите его. Разрешения можно добавлять двумя способами:
  4. Добавьте разрешения в область разрешений API.
    1. Найдите область разрешений API и нажмите кнопку "Добавить разрешение".

    2. Выберите API, к которому вы хотите получить доступ, и разрешение, которое требуется запросить из списка доступных параметров, и нажмите кнопку "Добавить разрешения".

      Снимок экрана: область разрешений API.

Вариант 2. Добавление разрешений в манифест приложения

  1. В области навигации слева в группе меню "Управление " выберите "Манифест". Выбор открывает редактор, позволяющий напрямую изменять атрибуты объекта регистрации приложения.
  2. Тщательно редактируйте requiredResourceAccess свойство в файле манифеста приложения.
  3. resourceAppId Добавьте свойство и resourceAccess свойство и назначьте необходимые разрешения.
  4. Сохраните изменения.

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

  • Запустите HTTP-запросы в выбранном инструменте, например в приложении или в обозревателе Graph.
  • Запустите API как пользователя с по крайней мере администратором облачных приложений или владельцем регистрации целевого приложения.
  • Приложение, используемое для внесения этих изменений, должно быть предоставлено Application.ReadWrite.All разрешение.
  1. Определите необходимые разрешения, идентификаторы разрешений и роли приложения (разрешения приложения) или делегированные разрешения. Например, если вы хотите запросить разрешения Microsoft Graph, ознакомьтесь с разрешениями Microsoft Graph для списка разрешений и их идентификаторов.

  2. Добавьте необходимые разрешения Microsoft Graph в приложение. В следующем примере вызывается API приложения Update, чтобы добавить необходимые разрешения Microsoft Graph в регистрацию приложения, определяемую идентификатором aaaaaaaa-0000-1111-2222-bbbbbbbbbbbbобъекта. В этом примере используются Analytics.Read и Application.Read.All делегированные разрешения и разрешения приложения. Microsoft Graph определяется как объект ServicePrincipal с 00000003-0000-0000-c000-000000000000 его глобально уникальным AppId.

    PATCH https://graph.microsoft.com/v1.0/applications/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
    Content-Type: application/json
     {
         "requiredResourceAccess": [
             {
                 "resourceAppId": "00000003-0000-0000-c000-000000000000",
                 "resourceAccess": [
                     {
                         "id": "e03cf23f-8056-446a-8994-7d93dfc8b50e",
                         "type": "Scope"
                     },
                     {
                         "id": "9a5d68dd-52b0-4cc2-bd40-abcf44ac3a30",
                         "type": "Role"
                     }
                 ]
             }
         ]
     }
    

Динамическое согласие — это способ запроса разрешений от пользователей или администраторов во время выполнения, а не статически объявлять их в области Регистрация приложений. Динамическое согласие позволяет приложению запрашивать только разрешения, необходимые для определенной функциональности, и при необходимости получать согласие от пользователя или администратора. Динамическое согласие можно использовать с делегированными разрешениями и объединяться с /.default областью запроса согласия администратора для всех разрешений.

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

  • Используйте Microsoft Graph: добавьте необходимые разрешения Microsoft Graph в регистрацию приложения. В этом примере используются Analytics.Read и Application.Read.All делегированные разрешения и разрешения приложения. Замените значения в "области" значениями всех делегированных разрешений Microsoft Graph, которые необходимо настроить для приложения.

    Запрос должен быть похож на следующий пример:

    https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=00001111-aaaa-2222-bbbb-3333cccc4444&response_type=code&scope=Analytics.Read+Application.Read

  • Используйте MSAL.js. Замените значения в "области" значениями всех делегированных разрешений Microsoft Graph, которые необходимо настроить для приложения.

      const Request = {
          scopes: ["openid", "profile"],
          loginHint: "example@domain.net"
      };
    
      myMSALObj.ssoSilent(Request)
          .then((response) => {
              // your logic
          }).catch(error => {
              console.error("Silent Error: " + error);
              if (error instanceof msal.InteractionRequiredAuthError) {
                  myMSALObj.loginRedirect(loginRequest);
              }
      });
    

После добавления разрешений в приложение пользователи или администраторы должны предоставить согласие новым разрешениям. Пользователи, не являющиеся администраторами, видят запрос на согласие при входе в приложение. С другой стороны, пользователи администратора могут предоставить согласие на новые разрешения от имени всех пользователей в своей организации при первом входе в приложение или в Центре администрирования Microsoft Entra.

Если добавленные разрешения требуют согласия администратора, необходимые действия зависят от типа приложения:

  • Однотенантное приложение и мультитенантное приложение в домашнем клиенте: пользователь должен войти как минимум роль администратора привилегированных ролей и предоставить согласие на уровне клиента.
  • Мультитенантные приложения в клиентах клиента: пользователь видит новые запросы на согласие при следующей попытке входа. Если разрешения требуют только согласия пользователя, пользователь может предоставить согласие. Если разрешения требуют согласия администратора, пользователь должен обратиться к администратору, чтобы предоставить согласие.

Остановка запроса неиспользуемых разрешений

Удаление разрешений может снизить риск предоставления конфиденциальных данных или компрометации безопасности и упростить процесс согласия для пользователей или администраторов. Если вашему приложению больше не требуется разрешение, следует запретить приложению запрашивать его, удалив разрешение на доступ к необходимым ресурсам и коду регистрации приложения. Например, приложение, которое больше не отправляет Уведомления по электронной почте может удалить Mail.ReadWrite разрешение.

Важный

Удаление разрешения из регистрации приложения не автоматически отменяет разрешения, которые уже предоставлены приложению. Вам нужно вручную отозвать разрешения. Дополнительные сведения см. в разделе "Отзыв согласия" для удаленных разрешений для корпоративного приложения этой статьи.

Чтобы остановить запрос разрешений, требующих статического согласия, необходимо удалить разрешение из области Регистрация приложений. Администратор клиента также должен отозвать разрешение на панель корпоративных приложений . Дополнительные сведения о том, как отозвать разрешения, предоставленные корпоративному приложению, см. в разделе "Отмена разрешений" для корпоративного приложения.

В этом разделе описано, как прекратить запрашивать разрешения для статического согласия.

Разрешения можно удалить из статического согласия двумя разными способами в Центре администрирования Microsoft Entra:

Вариант 1. В области разрешений API

  1. Войдите в Центр администрирования Microsoft Entra как минимум администратор облачных приложений или владелец приложения.
  2. Перейдите к приложениям >identity>Регистрация приложений> All.
  3. Найдите регистрацию приложения, из которой нужно удалить разрешения, и выберите его.
  4. Удалите разрешения из области разрешений API:
    1. Найдите область разрешений API и найдите разрешения, которые нужно удалить.

    2. Выберите API, который вы хотите удалить, и сначала нажмите кнопку "Отозвать согласие администратора" и удалите разрешение далее. Это гарантирует, что предоставленные разрешения удаляются из вашего клиента.

      Снимок экрана: удаление разрешений с помощью области разрешений API.

Вариант 2. Из манифеста приложения

  1. В области навигации слева в группе меню "Управление " выберите "Манифест". Откроется редактор, позволяющий напрямую редактировать атрибуты объекта регистрации приложения.
  2. Тщательно редактируйте requiredResourceAccess свойство в файле манифеста приложения.
  3. Удалите ненужные разрешения из resourceAppId свойства и resourceAccess свойства.
  4. Сохраните изменения.

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

  • Запустите HTTP-запросы в выбранном инструменте, например в приложении или в обозревателе Graph.
  • Вызовите API по крайней мере администратором облачных приложений или владельцем регистрации целевого приложения.
  • Приложение, используемое для внесения этих изменений, должно быть предоставлено Application.ReadWrite.All разрешение.
  1. Определите разрешения для приложения.

  2. Например, чтобы запретить приложению запрашивать разрешения Microsoft Graph, определять разрешения Microsoft Graph для приложения, их идентификаторы разрешений и роли приложения (разрешения приложения) или делегированные разрешения.

  3. Удалите нежелательные разрешения Microsoft Graph из приложения. В следующем примере вызывается API приложения обновления, чтобы удалить нежелательные разрешения Microsoft Graph из регистрации приложения, определяемого примером идентификатора 00001111-aaaa-2222-bbbb-3333cccc4444клиента. В этом примере приложение имеет Analytics.Readи User.ReadApplication.Read.All. Нам нужно удалить Analytics.Read и делегировать разрешения и Application.Read.All разрешения приложения. Microsoft Graph определяется как объект ServicePrincipal с 00000003-0000-0000-c000-000000000000 его глобально уникальным AppId и Microsoft Graph как его DisplayName и AppDisplayName.

    PATCH https://graph.microsoft.com/v1.0/applications/00001111-aaaa-2222-bbbb-3333cccc4444
    Content-Type: application/json
    {
        "requiredResourceAccess": [
            {
                "resourceAppId": "00000003-0000-0000-c000-000000000000",
                "resourceAccess": [
                    {
                        "id": "311a71cc-e848-46a1-bdf8-97ff7156d8e6 ",
                        "type": "Scope"
                    }
                ]
            }
        ]
    }
    

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

Этот метод работает только для делегированных разрешений. Разрешения приложения запрашиваются и предоставляются администратором через статическое согласие и не включаются в параметр области во время запроса авторизации OAuth 2.0.

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

  • Использование Microsoft Graph: удалите нежелательные делегированные разрешения Microsoft Graph из параметра "области". В этом примере приложение запрашивает три делегированных разрешения — Analytics.ReadUser.Read и Application.Read. Делегированные Analytics.Read разрешения и Application.Read больше не требуются для этого приложения. Для этого требуется User.Readтолько .

Запрос должен быть похож на следующий пример:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=00001111-aaaa-2222-bbbb-3333cccc4444&response_type=code&scope=User.Read

  • с помощью MSAL.js. Удалите нежелательные делегированные разрешения Microsoft Graph в области.

        const Request = {
            scopes: ["openid", "profile"],
            loginHint: "example@domain.net"
        };
    
        myMSALObj.ssoSilent(Request)
            .then((response) => {
                // your logic
            }).catch(error => {
                console.error("Silent Error: " + error);
                if (error instanceof msal.InteractionRequiredAuthError) {
                    myMSALObj.loginRedirect(loginRequest);
                }
        });
    

После удаления разрешений из регистрации приложения администратор в клиенте также должен отозвать согласие на защиту данных вашей организации. Если разрешение на удаление требует согласия администратора, необходимые действия зависят от типа приложения:

  • Однотенантное приложение и мультитенантное приложение в домашнем клиенте. Для одного приложения клиента обратитесь к администратору клиента, чтобы отозвать разрешения, уже предоставленные приложению. Для мультитенантного приложения обратитесь к администраторам всех клиентов, где находятся экземпляры приложения, чтобы отозвать разрешения, предоставленные корпоративному приложению. Отмена согласия на удаленные разрешения гарантирует, что приложение не поддерживает доступ через удаленное разрешение.
  • Мультитенантные приложения в клиентах клиентов: убедитесь, что вы взаимодействуете с клиентами, чтобы отозвать разрешения через объявления, блоги и любые другие каналы коммуникации.

Для отдельных клиентов и мультитенантных приложений пользователи, не являющиеся администраторами в клиентах, где разрешено согласие пользователя, могут использовать портал MyApps для отзыва согласия на разрешения, которые они ранее предоставили. Дополнительные сведения о том, как конечные пользователи могут отозвать разрешения на портале MyApps, см. в разделе "Отзыв согласия пользователя".

Замена разрешения

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

Замена разрешений также может снизить риск предоставления конфиденциальных данных или компрометации безопасности и, таким образом, улучшить взаимодействие с пользователем и доверие. Если ваше приложение использует разрешение с высоким уровнем привилегий, например Directory.ReadWrite.All, следует рассмотреть, достаточно ли менее привилегированное разрешение, например User.ReadWrite.All, достаточно для функциональности приложения.

Заметка

При изменении запрошенных разрешений приложения для статического согласия клиенту потребуется выполнить повторное согласование. Акт повторного уведомления отменяет все ранее предоставленные разрешения и предоставляет согласие на новые. При изменении запрошенных разрешений приложения для динамического согласия ранее предоставленные разрешения не отзываются. Клиент должен отозвать разрешения вручную.

Чтобы заменить разрешение, необходимо удалить ненужные разрешения и добавить альтернативный. Действия похожи на те, которые описаны в разделе "Остановка запроса неиспользуемых разрешений " и добавление разделов разрешений этой статьи.