Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
SharePoint и OneDrive имеют давно установленную модель разрешений, которая не вписывается в модель областей. Например, глобальный область, предоставляющий доступ ReadWrite к одному списку в клиенте, не существует. Вместо этого выбранные области поддерживают эти сценарии. Изначально Sites.Selected существовал для ограничения доступа приложения к одному семейству веб-сайтов. Теперь списки, элементы списков, папки и файлы также поддерживаются, а все выбранные области теперь поддерживают делегированный режим и режим приложения.
Примечание.
Из-за изменения требований к именованию область новые области перечислены в виде полного кортежа *.SelectedOperations.Selected. Функциональные различия между этим форматом и форматом отсутствуют Sites.Selected .
Scopes
В следующей таблице перечислены области выбранных разрешений.
| Scopes | Описание |
|---|---|
| Sites.Selected | Управляет доступом к приложениям на уровне семейства веб-сайтов, предоставляя доступ к определенному семейству веб-сайтов. |
| Списки. SelectedOperations.Selected | Управляет доступом к приложениям на уровне списка, предоставляя доступ к определенному списку. |
| ListItems.SelectedOperations.Selected | Управляет доступом к приложениям на уровне файлов, элементов списка или папок, предоставляя доступ к одному или нескольким элементам списка. |
| Files.SelectedOperations.Selected | Управляет доступом к приложению на уровне файлов или папок библиотеки, предоставляя доступ к одному или нескольким файлам. |
Как выбранные области работают с разрешениями SharePoint и OneDrive
Когда администратор соглашается с выбранными областями для приложения, он делегирует управление разрешениями ресурсов владельцам этого ресурса в рабочей нагрузке. Для других областей, таких как Files.Read.All, как только область будет предоставлено согласие, приложение сможет получить доступ к ресурсам, которые оно представляет. Для выбранных областей требуется явное действие назначения; приложение, согласилось на Списки. SelectedOperations.Selected изначально не будет иметь доступа.
Для работы с выбранными областями требуется ряд шагов, которые предоставляют администраторам несколько средств управления. В следующем примере используется Lists.SelectedOperations.Selected область, но действия применяются ко всем *. Выбранные области.
- Приложение должно быть предоставлено согласие в Entra ID, чтобы приложение или делегированное
Lists.SelectedOperations.Selectedобласть. - Приложению должны быть предоставлены разрешения на доступ к списку через вызов с
POST /sites/{siteid}/lists/{listid}/permissionsопределенной ролью. - Приложение должно получить допустимый маркер, содержащий
Lists.SelectedOperations.Selectedобласть для вызовов списка разрешений.
Если какой-либо из трех шагов пропущен, у приложения нет доступа. Администраторы двух точек управления:
- Удалите разрешения для определенного списка с помощью вызова
DELETE /sites/{siteid}/lists/{listid}/permissions/{id}, который удаляет доступ к списку для этого приложения. -
Lists.SelectedOperations.SelectedОтзыв согласия область в Entra ID, что блокирует доступ приложения к любому списку, для которого ранее были предоставлены разрешения.
Исходя из этого, вы можете предоставить приложению Lists.SelectedOperations.Selected согласие на область в Entra ID, но не предоставлять разрешения для любого списка. Это означает, что у приложения нет доступа. Аналогичным образом можно вызвать POST /sites/{siteid}/lists/{listid}/permissions любое приложение, но без соответствующих областей, отображаемых в маркере, у приложения нет доступа. Чтобы обеспечить ожидаемый доступ, необходимо выполнить все три шага. Это также относится и к другим *. Выбранные области и соответствующие уровни.
Примечание.
Назначение разрешений приложения спискам, элементам списка, папкам или файлам нарушает наследование назначенного ресурса, поэтому учитывайте ограничения службы для уникальных разрешений в структуре решения. Разрешения на уровне семейства веб-сайтов не нарушают наследование, так как это корень наследования разрешений.
Пример настройки разрешений показан для сайтов; логика аналогична для списков, элементов списка, файлов или папок.
В чем разница между файлами и областями listItems?
В SharePoint все файлы являются элементами списка, но все элементы списка не являются файлами. В результате приложения, которые несут ListItems.SelectedOperations.Selected область, могут получать доступ ко всем элементам списка и файлам и работать с ними до разрешенной роли. Приложения с могут работать только с файлами Files.SelectedOperations.Selected (элементами списка) в библиотеках документов или других списках, помеченных как содержащие документы. Это имитирует поведение Files.Read.All и Files.ReadWrite.All, существующее сегодня, но изолированное в одном файле. Это поведение не меняется в зависимости от пути Microsoft Graph, используемого, например с /drives/{driveid}/items/{itemid} и /sites/{siteid}/lists/{listid}/items/{itemid}; вместо этого поведением управляет назначение, к которому требуется доступ.
Роли
В следующей таблице перечислены четыре роли, которые могут быть назначены приложению для данного ресурса.
| Role | Описание |
|---|---|
| read | Чтение метаданных и содержимого ресурса. |
| write | Чтение и изменение метаданных и содержимого ресурса. |
| owner | Представляет роль владельца. |
| fullcontrol | Представляет полный контроль над ресурсом. |
Запрос
POST https://graph.microsoft.com/v1.0/sites/{siteId}/permissions
Content-Type: application/json
{
"roles": ["write"],
"grantedToIdentities": [{
"application": {
"id": "89ea5c94-7736-4e25-95ad-3fa95f62b66e",
"displayName": "Contoso Time Manager App"
}
}]
}
Заголовки запросов
| Имя | Описание |
|---|---|
| Авторизация | Bearer {token}. Обязательно. Дополнительные сведения о проверке подлинности и авторизации. |
| Content-Type | application/json. Обязательный. |
Отклик
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": "1",
"@deprecated.GrantedToIdentities": "GrantedToIdentities has been deprecated. Refer to GrantedToIdentitiesV2",
"roles": ["write"],
"grantedToIdentities": [{
"application": {
"id": "89ea5c94-7736-4e25-95ad-3fa95f62b66e",
"displayName": "Contoso Time Manager App"
}
}],
"grantedToIdentitiesV2": [{
"application": {
"id": "89ea5c94-7736-4e25-95ad-3fa95f62b66e",
"displayName": "Contoso Time Manager App"
}
}]
}
Примеры управления разрешениями см. в /permissions разделах API для сайта, списка, listItem и driveItem.
Какие разрешения требуются для управления разрешениями?
Требования к разрешениям зависят от уровня. Во всех делегированных случаях текущему пользователю также требуются достаточные разрешения для управления доступом путем вызова API. В следующей таблице приведены области и области и назначенные роли родительскому ресурсу. Например, если у вас есть роль Sites.Selected область AND FullControl (Sites.Selected+FullControl), вы можете управлять ресурсами в этом семействе веб-сайтов.
| Ресурс | Необходимые разрешения для ресурсов | Примечания |
|---|---|---|
| site | Sites.FullControl.All | Так как вы можете предоставить полный доступ к семейству веб-сайтов с помощью Sites.Selected, это требование обязательно является высоким. |
| список | Sites.FullControl.All, Sites.Selected+FullControl, Sites.Selected+Owner | |
| listItem | Sites.FullControl.All, Sites.Selected+FullControl, Sites.Selected+Owner, Списки. SelectedOperations.Selected+FullControl, Списки. SelectedOperations.Selected+Owner | |
| file | Sites.FullControl.All, Sites.Selected+FullControl, Sites.Selected+Owner, Списки. SelectedOperations.Selected+FullControl, Списки. SelectedOperations.Selected+Owner |
Как вычисляется доступ
Существует два типа маркеров: только приложения и делегированные. В сценариях только приложений нет пользователя и они считаются более высоким риском. При делегировании приложение никогда не может превышать существующие разрешения текущего пользователя и может считаться более низким риском для многих сценариев. Делегирование предпочтительнее, когда это возможно, но оба режима доступны в соответствии с вашими потребностями.
Хранится кортеж идентификатора приложения, идентификатора ресурса и роли. Таким образом, [приложение] имеет [роль] доступ к [ресурсу]. Приложение и роль указываются при создании разрешения через API, а разрешенный путь предоставляет ресурс. Например, приложение Z имеет доступ на чтение к списку по адресу /sites/dev/lists/list1.
Чтобы вычислить доступ, используйте значения, указанные в маркере, чтобы примерно следовать этому потоку:
Проверьте тип маркера (приложение или делегированный).
Найдите запись приложения для предоставленного идентификатора приложения в ресурсе или защищаемого иерархического родителя (наследование).
Происходит одно из следующих действий:
- Если для доступа к приложению найдена запись для приложения и роль разрешает запрошенную операцию (чтение элемента, обновление списка), доступ предоставляется.
- В делегированном сценарии разрешения приложения и пользователя вычисляются, а затем пересекаются, что означает, что приложение никогда не может превышать разрешения пользователя, а пользователь никогда не может превышать (через приложение) разрешения приложения, предоставленные согласием.
Заметки о поведении согласия
Следующие примечания относятся к поведению согласия:
- Приложения могут иметь несколько выбранных согласия, и эти согласия могут применяться на разных уровнях в клиенте.
- Доступ к приложению теряется сразу после отзыва область. Если приложение имеет Списки.* и Sites.* и ему предоставляется доступ к семейству веб-сайтов и определенному списку в этом семействе веб-сайтов, а затем согласие Sites.* отзывается, приложение сохраняет доступ к списку, к которому ему был предоставлен определенный доступ через согласие Списки.* и предыдущий вызов
list/permissions. - Если приложение имеет разрешения на доступ к списку через вызов
list/permissions, а доступ удаляется через вызовDELETE lists/permissions/id, оно теряет доступ к списку и всем элементам в этом списке, независимо от явных разрешений, заданных для этих элементов списка. Позже при необходимости вы сможете перенаправить разрешения на определенные элементы. - Более высокие области, такие как Сайты.* можно использовать для предоставления разрешений для конкретных файлов, но более низкие области никогда не могут предоставить доступ к ресурсам более высокого уровня. Это позволяет приложениям иметь доступ на определенном уровне.
- Согласие — это внешняя концепция, которую OneDrive и SharePoint используют через предоставленный маркер, и все области, представленные в маркере, учитываются.