Compartir a través de


Registro de permisos de aplicación de tipo contenedor de almacenamiento de archivos

Para que una aplicación de SharePoint Embedded interactúe con contenedores en un inquilino de consumo, primero debe registrarse el tipo de contenedor en el inquilino de consumo. El registro de tipo de contenedor se produce cuando la aplicación propietaria invoca la API de registro para especificar qué permisos se pueden realizar con su tipo de contenedor. La API de registro también concede acceso a otras aplicaciones invitadas para interactuar con los contenedores de la aplicación propietaria. Por ejemplo, una aplicación de SharePoint Embedded puede conceder permisos a otra aplicación: una aplicación invitada para que la aplicación invitada pueda realizar operaciones de copia de seguridad en sus contenedores.

Puesto que la API de registro controla los permisos que una aplicación de SharePoint Embedded puede realizar en el contenedor del inquilino de consumo, esta llamada debe ser una de las primeras API invocadas. Si no lo hace, se producirán errores de acceso denegado al invocar otras API en el contenedor o en el contenido de los contenedores.

No hay ninguna restricción sobre cuántas veces se puede invocar la API de registro. La frecuencia con la que se invoca la API de registro y cuándo se invoca depende de la aplicación de SharePoint Embedded. Sin embargo, la última llamada correcta a la API de registro determina la configuración usada en el inquilino de consumo.

Nota:

Solo la aplicación propietaria del tipo de contenedor puede invocar la API de registro en el inquilino de consumo.

La API de registro NO es un Graph API y solo se puede invocar mediante apponly y un token de acceso basado en certificados. Más información sobre la autenticación.

Permisos de tipo de contenedor

La API de registro determina qué permisos puede realizar una aplicación de SharePoint Embedded en contenedores y contenido en contenedores para el tipo de contenedor especificado.

Permiso Descripción
Ninguno No tiene permisos para ningún contenedor o contenido de este tipo de contenedor.
ReadContent Puede leer el contenido de los contenedores de este tipo de contenedor.
WriteContent Puede escribir contenido en contenedores para este tipo de contenedor. Este permiso no se puede conceder sin el permiso ReadContent.
Crear Puede crear contenedores de este tipo de contenedor.
Eliminar Puede eliminar contenedores de este tipo de contenedor.
Lectura Puede leer los metadatos de los contenedores de este tipo de contenedor.
Escritura Puede actualizar los metadatos de los contenedores de este tipo de contenedor.
EnumeratePermissions Puede enumerar los miembros de un contenedor y sus roles para contenedores de este tipo de contenedor.
AddPermissions Puede agregar miembros al contenedor para contenedores de este tipo de contenedor.
UpdatePermissions Puede actualizar (cambiar roles de) pertenencias existentes en el contenedor para contenedores de este tipo de contenedor.
DeletePermissions Puede eliminar otros miembros (pero no uno mismo) del contenedor para contenedores de este tipo de contenedor.
DeleteOwnPermissions Puede quitar la pertenencia propia del contenedor para contenedores de este tipo de contenedor.
ManagePermissions Puede agregar, quitar (incluido el autoservicio) o actualizar miembros en los roles de contenedor para contenedores de este tipo de contenedor.
Full Tiene todos los permisos para contenedores de este tipo de contenedor.

Solicitud HTTP

PUT {RootSiteUrl}/_api/v2.1/storageContainerTypes/{containerTypeId}/applicationPermissions

Nota:

Esto NO es un Graph API

{RootSiteURL} es la dirección URL de SharePoint del inquilino que consume. Por ejemplo, https://contoso.sharepoint.com.

Cuerpo de la solicitud

En el cuerpo de la solicitud, proporcione una representación JSON de los permisos de tipo de contenedor para las aplicaciones de SharePoint Embedded.

Respuesta

Si se ejecuta correctamente, este método devuelve un 200 OK código de respuesta y los permisos de tipo de contenedor configurados para las aplicaciones de SharePoint Embedded en el cuerpo de la respuesta.

Código HTTP Descripción
400 Solicitud incorrecta.
401 La solicitud carece de credenciales de autenticación válidas.
403 Las credenciales de autenticación proporcionadas son válidas pero insuficientes para realizar la operación solicitada. Ejemplos: la aplicación que realiza la llamada no es la aplicación propietaria del tipo de contenedor.
404 El tipo de contenedor no existe.

Ejemplos

Registro del tipo de contenedor en un inquilino consumidor

Registre el tipo de contenedor en el inquilino de consumo y conceda permisos completos a la aplicación propietaria (AppId 71392b2f-1765-406e-86af-5907d9bdb2ab) para las llamadas Delegadas y AppOnly.

Solicitud

PUT {RootSiteUrl}/_api/v2.1/storageContainerTypes/{containerTypeId}/applicationPermissions
Content-Type: application/json

{
  "value": [
    {
      "appId": "71392b2f-1765-406e-86af-5907d9bdb2ab",
      "delegated": ["full"],
      "appOnly": ["full"]
    }
  ]
}

Respuesta

HTTP/1.1 200 OK
Content-type: application/json

{
  "value": [
    {
      "appId": "71392b2f-1765-406e-86af-5907d9bdb2ab",
      "delegated": ["full"],
      "appOnly": ["full"]
    }
  ]
}

Registro del tipo de contenedor en un inquilino de consumo con permisos para una aplicación invitada

Registre el tipo de contenedor en el inquilino de consumo y conceda permisos completos a la aplicación propietaria (AppId 71392b2f-1765-406e-86af-5907d9bdb2ab) para las llamadas Delegadas y AppOnly. Además, conceda a una aplicación invitada (AppId 89ea5c94-7736-4e25-95ad-3fa95f62b6) permisos de lectura y escritura solo para llamadas delegadas.

Solicitud

PUT /storagecontainerTypes/{containerTypeId}/applicationPermissions
Content-Type: application/json

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

Respuesta

HTTP/1.1 200 OK
Content-type: application/json

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