Compartir a través de


Descripción del consentimiento específico de recursos para Microsoft Graph y SharePoint Online

Históricamente en Microsoft SharePoint, tanto en el entorno local como en línea, ha habido la capacidad de registrar aplicaciones en Azure Access Control Services (ACS) con permisos granulares destinados solo a colecciones de sitios específicas. Mediante esta técnica, pudo autorizar a una aplicación personalizada para leer, escribir, administrar o tener control total en colecciones de sitios específicas con permisos de solo aplicación.

Sin embargo, ACS ya no es la mejor opción para administrar el registro de aplicaciones y la seguridad de SharePoint. Debe confiar en Microsoft Entra (anteriormente Azure Active Directory) registro de aplicaciones y OAuth. De forma predeterminada, al registrar una aplicación en Microsoft Entra y puede configurar permisos de aplicación de Microsoft Graph como Sites.Read.All, Sites.ReadWrite.All, Sites.Manage.All o Sites.FullControl.All, que son permisos destinados a todas las colecciones de sitios del inquilino de destino, como indica la palabra All en el nombre de los ámbitos de permisos.

El destino Todos no siempre es bienvenido por los clientes, en particular por los clientes empresariales con miles de colecciones de sitios, dispuestos a tener permisos más granulares y a poder seleccionar las colecciones de sitios de destino donde la aplicación debe tener permisos de lectura, escritura, administración o control total.

Importante

En este artículo se hace referencia a los denominados componentes de PnP, ejemplos o herramientas que son recursos de código abierto respaldados por una comunidad activa que proporciona soporte técnico para ellos. Los canales oficiales de soporte técnico de Microsoft no ofrecen ningún contrato de nivel de servicio para herramientas de código abierto. Sin embargo, estos componentes o ejemplos usan LAS API y características integradas compatibles con Microsoft que son compatibles con Microsoft.

Si lo prefiere, puede watch el siguiente vídeo, en lugar de leer todo el artículo, que todavía puede considerar como una referencia mucho más detallada.

IMAGE_ALT

Nota:

Para obtener más información sobre el registro de aplicaciones en Microsoft Entra en lugar de confiar en Azure ACS, lea el artículo Actualización de aplicaciones de SharePoint de Azure Access Control Service a Microsoft Entra.

Con el consentimiento específico de recursos (RSC) puede registrar aplicaciones en Microsoft Entra y concederles permisos de solo aplicación que solo puedan dirigirse a colecciones de sitios específicas, como solía hacer con ACS. En este artículo, aprenderá a beneficiarse de esta funcionalidad.

Para registrar una aplicación Microsoft Entra con el permiso RSC, basta con registrar una aplicación normal en Microsoft Entra. Sin embargo, al configurar los permisos de API de la aplicación, en lugar de seleccionar cualquiera de los sitios.<algo>. Todos los permisos de aplicación para Microsoft Graph, debe elegir el permiso de aplicación Sites.Selected , como se muestra en la captura de pantalla siguiente.

La interfaz de usuario de Microsoft Entra al configurar el permiso de aplicación Sites.Selected para una aplicación a través de Microsoft Graph.

A continuación, un administrador de inquilinos, que eventualmente puede seguir siendo usted, tendrá que conceder el permiso de aplicación Sites.Selected a la aplicación.

También hay un permiso de aplicación Sites.Selected para SharePoint Online, en caso de que desee consumir SharePoint Online a través de las API REST, en lugar de consumir SharePoint Online a través de Microsoft Graph. En la captura de pantalla siguiente, puede ver el aspecto del permiso Sites.Selected para SharePoint Online en Microsoft Entra.

La interfaz de usuario de Microsoft Entra al configurar el permiso de aplicación Sites.Selected para una aplicación a través de SharePoint Online.

Concesión de permisos a una colección de sitios específica

Una vez asignado y concedido el permiso de aplicación Sites.Selected , la aplicación sigue sin poder acceder a ninguna colección de sitios de destino. Para poder acceder a cualquier sitio de destino, necesitará un administrador global de inquilinos o una aplicación con permiso de aplicación Sites.FullControl.All para conceder permisos explícitos para los sitios de destino seleccionados.

Concesión de permisos a través de Microsoft Graph

Para conceder permisos a los sitios de destino seleccionados, puede usar una solicitud POST de Microsoft Graph API, que tiene como destino la siguiente dirección URL:

https://graph.microsoft.com/v1.0/sites/{siteId}/permissions

Donde {siteId} es el identificador único de Microsoft Graph de la colección de sitios de destino, con un formato similar al siguiente:

contoso.sharepoint.com,5a58bb09-1fba-41c1-8125-69da264370a0,9f2ec1da-0be4-4a74-9254-973f0add78fd

El cuerpo de la solicitud HTTP POST debe tener una estructura como el siguiente fragmento de código.

{
  "roles": ["{role}"],
  "grantedToIdentities": [{
    "application": {
      "id": "{clientId}",
      "displayName": "{application-name}"
    }
  }]
}

Donde {role} puede ser cualquiera de los valores siguientes, o una matriz de cualquiera de los siguientes valores:

  • read: proporciona la capacidad de leer los metadatos y el contenido del elemento.
  • write: proporciona la capacidad de leer y modificar los metadatos y el contenido del elemento.
  • manage: proporciona la capacidad de leer y modificar los metadatos y el contenido del elemento y administrar el sitio.
  • fullcontrol: proporciona control total sobre el sitio y su contenido.

El atributo {client-id} es el identificador de cliente real de la aplicación Microsoft Entra y {application-name} es una descripción de la aplicación.

La respuesta que obtendrá de Microsoft Graph tendrá un aspecto similar al siguiente archivo JSON.

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites('contoso.sharepoint.com,5a58bb09-1fba-41c1-8125-69da264370a0,9f2ec1da-0be4-4a74-9254-973f0add78fd')/permissions/$entity",
  "id": "aTowaS50fG1zLnNwLmV4dHxlMDBiNWUzZi0yMzI1LTQ3MWQtOTljZi1iOGM5ZDlmNDU2N2FANmM5NDA3NWEtZGEwYS00YzZhLTg0MTEtYmFkZjY1MmU4YjUz",
  "roles": [
    "write"
  ],
  "grantedToIdentitiesV2": [
    {
      "application": {
        "displayName": "AddInGuidanceRSC",
        "id": "e00b5e3f-2325-471d-99cf-b8c9d9f4567a"
      }
    }
  ],
  "grantedToIdentities": [
    {
      "application": {
        "displayName": "AddInGuidanceRSC",
        "id": "e00b5e3f-2325-471d-99cf-b8c9d9f4567a"
      }
    }
  ]
}

Observe que la propiedad id de la respuesta representa el identificador único para identificar el permiso asignado personalizado. Con ese identificador, también puede administrar permisos seleccionados ya asignados mediante REST y realizar solicitudes GET, PATCH o DELETE destinadas al punto de conexión permissions/{permission-id} de la colección de sitios de destino, donde {permission-id} representa el identificador único del permiso.

Claramente, también puede optar por usar el SDK de Microsoft Graph para administrar los permisos, en lugar de depender de solicitudes HTTP de bajo nivel.

Concesión de permisos a través de PowerShell de PnP

Para conceder y administrar permisos a los sitios de destino seleccionados, también puede usar un conjunto de cmdlets de PowerShell PnP:

Por ejemplo, si desea conceder permiso de escritura a una aplicación de destino para un sitio seleccionado, puede usar la siguiente sintaxis de PowerShell:

Grant-PnPAzureADAppSitePermission -AppId {client-id} -DisplayName {display-name} -Permissions <Read|Write|Manage|FullControl> -Site {site-object}

Al igual que con el punto de conexión de Microsoft Graph, el argumento {client-id} es el identificador de cliente de la aplicación Microsoft Entra y {nombre para mostrar} es una descripción de la aplicación. El argumento Permissions puede ser uno o varios de los valores siguientes:

  • Lectura: proporciona la capacidad de leer los metadatos y el contenido del elemento.
  • Escritura: proporciona la capacidad de leer y modificar los metadatos y el contenido del elemento.
  • Administrar: proporciona la capacidad de leer y modificar los metadatos y el contenido del elemento y administrar el sitio.
  • FullControl: proporciona control total sobre el sitio y su contenido.

El valor {site-object} puede ser un objeto de sitio recuperado mediante el cmdlet Get-PnPSite o se puede omitir para dirigirse como el sitio seleccionado al que está conectado con el cmdlet Connect-PnPOnline .

La salida de este comando tendrá un aspecto similar al siguiente, en la consola de PowerShell.

Id    : aTowaS50fG1zLnNwLmV4dHxlMDBiNWUzZi0yMzI1LTQ3MWQtOTljZi1iOGM5ZDlmNDU2N2FANmM5NDA3NWEtZGEwYS00YzZhLTg0MTEtYmFkZjY
        1MmU4YjUz
Roles : {fullcontrol}
Apps  : {AddInGuidanceRSC, e00b5e3f-2325-471d-99cf-b8c9d9f4567a}

Observe que el cmdlet devuelve el permiso concedido y el identificador único del objeto de permiso.

En caso de que quiera actualizar una asignación de permisos para un sitio seleccionado, puede usar una sintaxis de PowerShell como la siguiente:

Set-PnPAzureADAppSitePermission -PermissionId {permission-id} -Permissions <Read|Write|Manage|FullControl>

Donde el argumento {permission-id} es el identificador que tiene al invocar el cmdlet Grant-PnPAzureADAppSitePermission .

Si desea revocar una concesión de permisos de un sitio seleccionado, puede usar el cmdlet Revoke-PnPAzureADAppSitePermission con la siguiente sintaxis.

Revoke-PnPAzureADAppSitePermission -PermissionId {permission-id}

Nota:

En la carpeta de ejemplos asociada a este artículo, puede encontrar un script de PowerShell de ejemplo que muestra cómo usar los cmdlets de PowerShell PnP para RSC.

Consumo de la colección de sitios de destino

Una vez que haya registrado una aplicación Microsoft Entra con el permiso de aplicación Sites.Selected, ya sea con Microsoft Graph o con SharePoint Online, o con ambos, puede empezar a consumir las colecciones de sitios seleccionadas según los permisos concedidos.

Debe solicitar un token de acceso de solo aplicación desde Microsoft Entra y empezar a consumir las colecciones de sitios seleccionadas. Si va a dirigirse a un sitio para el que se le han concedido permisos a la aplicación, lo hará correctamente. Si va a dirigirse a cualquier otra colección de sitios, para la que no se hayan concedido permisos a la aplicación, se producirá un error en el código y verá una excepción "Acceso denegado".

Si desea obtener más información sobre cómo consumir SharePoint Online a través de la API REST de SharePoint o a través de Microsoft Graph mediante un token de solo aplicación, puede leer la sección Consumo de SharePoint Online en modo de solo aplicación a través de una aplicación registrada en Azure AD del artículo Actualización de aplicaciones de SharePoint de Azure Access Control Service a Microsoft Entra.

Nota:

En la carpeta de ejemplos asociada a este artículo, puede encontrar una aplicación de consola de .NET 6 de ejemplo que muestra cómo consumir sitios de SharePoint Online aprovechando el modelo RSC.

Puede encontrar información adicional sobre este artículo leyendo los documentos siguientes: