Поделиться через


Регистрация разрешений приложения типа контейнера хранилища файлов

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

Так как API регистрации типа контейнера управляет доступом к типу контейнера в потребляемом клиенте, это первая конечная точка, вызываемая приложением SharePoint Embedded в потребляемом клиенте. Если это не сделать, при вызове других API для контейнеров и (или) содержимого в контейнерах возникают ошибки отказа в доступе.

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

Требования к проверке подлинности и авторизации

Чтобы приложение, владеющее типом контейнера, действовало на потребляющий клиент, необходимо выполнить некоторые предварительные требования:

  • в потребляющий клиент должен быть установлен субъект-служба .
  • приложению-владельце должно быть предоставлено согласие администратора на регистрацию типа контейнера в используемом клиенте.

Вы можете удовлетворить эти требования, предоставив глобальному администратору клиента согласие администратора для приложения- владеющего контейнера.

ДЛЯ API регистрации типа контейнера требуется делегированное пользователем FileStorageContainerTypeReg.Selected разрешение или разрешение только для приложения. Когда владеющее приложение вызывает API регистрации типа контейнера от имени пользователя, пользователю должны быть назначены роли администратора SharePoint Embedded или глобального администратора . Когда владеющее приложение вызывает API регистрации типа контейнера без контекста пользователя, ему необходимо запросить маркер с помощью потока предоставления учетных данных клиента.

Примечание.

API регистрации типа контейнера в настоящее время находится в предварительной версии и может быть изменен.

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

https://login.microsoftonline.com/{ConsumingTenantId}/v2.0/adminconsent?client_id={OwningAppId}&scope=https://graph.microsoft.com/.default

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

Разрешения типа контейнера

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

Разрешение Описание
Нет Не имеет разрешений на контейнеры или содержимое этого типа.
ReadContent Может считывать содержимое контейнеров этого типа.
WriteContent Может записывать содержимое в контейнеры для этого типа контейнеров. Это невозможно предоставить без разрешения ReadContent.
Создание Может создавать контейнеры этого типа.
Удалить Может удалять контейнеры этого типа.
Чтение Может считывать метаданные контейнеров этого типа.
Запись Может обновлять метаданные контейнеров этого типа.
EnumeratePermissions Может перечислять члены контейнера и их роли для контейнеров этого типа.
AddPermissions Можно добавлять члены в контейнер для контейнеров этого типа.
UpdatePermissions Может обновлять (изменять роли) существующего членства в контейнере для контейнеров этого типа.
DeletePermissions Может удалять другие члены (но не самостоятельно) из контейнера для контейнеров этого типа.
DeleteOwnPermissions Может удалить собственное членство в контейнере для контейнеров этого типа.
ManagePermissions Может добавлять, удалять (включая самостоятельно) или обновлять члены в ролях контейнеров для контейнеров этого типа.
ManageContent Может управлять содержимым контейнера
Full Имеет все разрешения для контейнеров этого типа.

Примеры

Регистрация типа контейнера в потребляемом клиенте с разрешениями только для приложения-хозяйки

Зарегистрируйте тип de988700-d700-020e-0a00-0831f3042f00 контейнера в потребляющем клиенте и предоставьте full разрешения приложению-владельце 71392b2f-1765-406e-86af-5907d9bdb2ab для делегированных вызовов и вызовов только для приложения.

Запрос

PUT https://graph.microsoft.com/beta/storage/fileStorage/containerTypeRegistrations/de988700-d700-020e-0a00-0831f3042f00
Content-Type: application/json

{
  "applicationPermissionGrants": [
    {
      "appId": "71392b2f-1765-406e-86af-5907d9bdb2ab",
      "delegatedPermissions": ["full"],
      "applicationPermissions": ["full"]
    }
  ]
}

Отклик

HTTP/1.1 201 Created
Content-Type: application/json

{
  "@odata.type": "#microsoft.graph.fileStorageContainerTypeRegistration",
  "id": "de988700-d700-020e-0a00-0831f3042f00",
  "name": "Test Container Type",
  "owningAppId": "71392b2f-1765-406e-86af-5907d9bdb2ab",
  "billingClassification": "trial",
  "billingStatus": "valid",
  "registeredDateTime": "08/11/2025",
  "expirationDateTime": "08/11/2025",
  "etag": "RVRhZw==",
  "settings": {
    "@odata.type": "microsoft.graph.fileStorageContainerTypeRegistrationSettings",
    "sharingCapability": "disabled",
    "urlTemplate": "https://app.contoso.com/redirect?tenant={tenant-id}&drive={drive-id}&folder={folder-id}&item={item-id}",
    "isDiscoverabilityEnabled": true,
    "isSearchEnabled": true,
    "isItemVersioningEnabled": true,
    "itemMajorVersionLimit": 50,
    "maxStoragePerContainerInBytes": 104857600,
    "isSharingRestricted": false
  },
  "applicationPermissionGrants": [
    {
      "appId": "71392b2f-1765-406e-86af-5907d9bdb2ab",
      "delegatedPermissions": ["full"],
      "applicationPermissions": ["full"]
    }
  ]
}

Регистрация типа контейнера в используемом клиенте с разрешениями для гостевого приложения

Зарегистрируйте тип de988700-d700-020e-0a00-0831f3042f00 контейнера в потребляющем клиенте и предоставьте приложению-владельце 71392b2f-1765-406e-86af-5907d9bdb2ab полные разрешения для делегированных вызовов и вызовов только для приложений. Кроме того, предоставьте гостевму приложению 89ea5c94-7736-4e25-95ad-3fa95f62b6read разрешения и write только для делегированных вызовов.

Запрос

PUT https://graph.microsoft.com/beta/storage/fileStorage/containerTypeRegistrations/de988700-d700-020e-0a00-0831f3042f00
Content-Type: application/json

{
  "applicationPermissionGrants": [
    {
      "appId": "71392b2f-1765-406e-86af-5907d9bdb2ab",
      "delegatedPermissions": ["full"],
      "applicationPermissions": ["full"]
    },
    {
      "appId": "89ea5c94-7736-4e25-95ad-3fa95f62b6",
      "delegated": ["read", "write"],
      "appOnly": ["none"]
    }
  ]
}

Отклик

HTTP/1.1 201 Created
Content-Type: application/json

{
  "@odata.type": "#microsoft.graph.fileStorageContainerTypeRegistration",
  "id": "de988700-d700-020e-0a00-0831f3042f00",
  "name": "Test Container Type",
  "owningAppId": "71392b2f-1765-406e-86af-5907d9bdb2ab",
  "billingClassification": "trial",
  "billingStatus": "valid",
  "registeredDateTime": "08/11/2025",
  "expirationDateTime": "08/11/2025",
  "etag": "RVRhZw==",
  "settings": {
    "@odata.type": "microsoft.graph.fileStorageContainerTypeRegistrationSettings",
    "sharingCapability": "disabled",
    "urlTemplate": "https://app.contoso.com/redirect?tenant={tenant-id}&drive={drive-id}&folder={folder-id}&item={item-id}",
    "isDiscoverabilityEnabled": true,
    "isSearchEnabled": true,
    "isItemVersioningEnabled": true,
    "itemMajorVersionLimit": 50,
    "maxStoragePerContainerInBytes": 104857600,
    "isSharingRestricted": false
  },
  "applicationPermissionGrants": [
    {
      "appId": "71392b2f-1765-406e-86af-5907d9bdb2ab",
      "delegatedPermissions": ["full"],
      "applicationPermissions": ["full"]
    },
    {
      "appId": "89ea5c94-7736-4e25-95ad-3fa95f62b6",
      "delegated": ["read", "write"],
      "appOnly": ["none"]
    }
  ]
}