Общие сведения о делегированных доступах

Когда пользователь входит в приложение и использует его для доступа к другому ресурсу, например Microsoft Graph, приложению сначала потребуется запросить разрешение на доступ к этому ресурсу от имени пользователя. Этот распространенный сценарий называется делегированным доступом.

Почему следует использовать делегированный доступ?

Люди часто используют разные приложения для доступа к данным из облачных служб. Например, кто-то может использовать избранное приложение чтения PDF для просмотра файлов, хранящихся в OneDrive. Другим примером может быть бизнес-приложение компании, которое может получить общую информацию о своих коллегах, чтобы они могли легко выбирать рецензентов для запроса. В таких случаях клиентское приложение, средство чтения PDF или средство утверждения запроса компании должно быть авторизовано для доступа к этим данным от имени пользователя, выполнившего вход в приложение.

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

Diagram shows illustration of delegated access scenario.

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

Запрос область в качестве клиентского приложения

Приложению потребуется попросить пользователя предоставить определенный область или набор область для приложения ресурсов, к которому вы хотите получить доступ. Области также могут называться делегированными разрешениями. Эти область описывают ресурсы и операции, которые приложение хочет выполнить от имени пользователя. Например, если вы хотите, чтобы ваше приложение отображалось в списке недавно полученных сообщений и сообщений чата, вы можете попросить пользователя согласиться с Microsoft Graph Mail.Read и Chat.Read область.

Когда приложение запросило область, пользователю или администратору потребуется предоставить запрошенный доступ. Пользователи потребителей с учетными записями Майкрософт, такие как Outlook.com или учетные записи Xbox Live, всегда могут предоставлять область для себя. Пользователи организации с учетными записями Microsoft Entra могут или не могут предоставлять область в зависимости от параметров организации. Если пользователь организации не может напрямую предоставить согласие на область, им потребуется попросить администратора организации предоставить им согласие.

Всегда следуйте принципу наименьшей привилегии: никогда не следует запрашивать область, необходимые приложению. Этот принцип помогает ограничить риск безопасности, если приложение скомпрометировано и упрощает предоставление администраторам доступа к приложению. Например, если вашему приложению нужно только перечислить чаты, к которому принадлежит пользователь, но не нужно показывать сообщения чата самостоятельно, следует запросить более ограниченные область Microsoft Graph Chat.ReadBasic , а не Chat.Read. Дополнительные сведения о область openID см. в область OpenID.

Проектирование и публикация область для службы ресурсов

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

Как работает делегированный доступ?

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

  • Авторизация клиентских приложений — клиентские приложения авторизованы путем предоставления область. Когда клиентское приложение предоставляется область пользователем или администратором для доступа к некоторым ресурсам, это предоставление будет записано в идентификаторе Microsoft Entra. Все маркеры делегированного доступа, запрашиваемые клиентом для доступа к ресурсу от имени соответствующего пользователя, будут содержать значения утверждений область в утвержденииscp. Приложение ресурсов проверка это утверждение, чтобы определить, предоставлено ли клиентское приложение правильное область для вызова.
  • Авторизация пользователей . Пользователи авторизованы с помощью вызываемого ресурса. Приложения ресурсов могут использовать одну или несколько систем для авторизации пользователей, таких как управление доступом на основе ролей, отношения владения и членства, списки управления доступом или другие проверка. Например, идентификатор Microsoft Entra проверка, которым пользователь был назначен роли управления приложениями или общей администратором, прежде чем разрешать им удалять приложения организации, но также позволяет всем пользователям удалять приложения, принадлежащие им. Аналогичным образом, служба SharePoint Online проверка, что у пользователя есть соответствующие права владельца или читателя над файлом, прежде чем разрешить этому пользователю открыть его.

Пример делегированного доступа — OneDrive с помощью Microsoft Graph

Рассмотрим следующий пример:

Алиса хочет использовать клиентское приложение для открытия файла, защищенного API ресурсов Microsoft Graph. Для авторизации пользователей служба OneDrive проверка, хранится ли файл на диске Алисы. Если он хранится на диске другого пользователя, OneDrive отклонит запрос Алисы как несанкционированный, так как Алиса не имеет права читать диски других пользователей.

Для авторизации клиентского приложения OneDrive проверка, был ли клиент, выполняющий вызов, был предоставлен Files.Read область от имени вошедшего пользователя. В этом случае вошедшего пользователя является Алиса. Если Files.Read приложение для Алисы не предоставлено, OneDrive также завершится сбоем запроса.

GET /drive/{id}/files/{id} Клиентское приложение, предоставленное Files.Read область для Алисы Клиентское приложение не предоставлено Files.Read область для Алисы
Документ находится в OneDrive Алисы. 200 — предоставлен доступ. 403 - Несанкционированное. Алиса (или ее администратор) не разрешила этому клиенту читать свои файлы.
Документ находится в OneDrive другого пользователя*. 403 - Несанкционированное. Алиса не имеет прав на чтение этого файла. Несмотря на то, что клиент был предоставлен Files.Read , он должен быть отклонен при действии от имени Алисы. 403 — несанкционированный. Алиса не имеет прав на чтение этого файла, и клиент не может читать файлы, к которым у нее есть доступ.

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

См. также