Compartir a través de


Privilegios elevados

Use las cuentas de servicio o directiva de solo aplicación para elevar privilegios en complementos de SharePoint u otras soluciones hospedadas de forma remota.

Se aplica a: aplicaciones para SharePoint | SharePoint 2013 | Complementos de SharePoint | SharePoint Online

Se usan diferentes métodos para elevar privilegios en soluciones de complementos de SharePoint y granja de servidores. Las soluciones de granja de servidores elevan privilegios mediante RunWithElevatedPrivileges(SPSecurity.CodeToRunElevated), que pertenece al modelo de objetos del lado servidor de SharePoint. Los complementos de SharePoint usan cuentas de servicio o la directiva solo de aplicación.

Es posible que desee usar privilegios elevados en el complemento cuando:

  • El complemento realiza acciones para los usuarios que los usuarios no tienen permisos individuales adecuados para completar. Es posible que los administradores no asignen a los usuarios determinados permisos porque el nivel de permisos es demasiado alto.

    Por ejemplo, su organización podría implementar una solución de aprovisionamiento de colecciones de sitios personalizada que los usuarios deben usar para crear colecciones de sitios. Su organización puede especificar que todas las colecciones de sitios nuevas deben tener determinadas listas, tipos de contenido o campos asociados a ellas. Si los usuarios crean colecciones de sitios por su cuenta, es posible que o no recuerden crear estos objetos en su nueva colección de sitios. En este escenario, los usuarios crean colecciones de sitios mediante el complemento, pero los usuarios no tienen permisos asignados individualmente para crear colecciones de sitios.

  • El complemento no actúa en nombre de ningún usuario; por ejemplo, un proceso de gobernanza o administración.

Autorización de directiva de solo aplicación

La directiva de solo aplicación usa OAuth para autenticar el complemento. Cuando el complemento usa la directiva de solo aplicación, SharePoint comprueba solo los permisos de la entidad de seguridad del complemento. Estos son los permisos que se concedieron al complemento. La autorización se realiza correctamente si el complemento tiene permisos suficientes para realizar la tarea, independientemente de los permisos asociados al usuario actual. Cuando la autorización se realiza correctamente, se devuelve un token de acceso al complemento. El complemento usará este token de acceso para realizar las operaciones necesarias para el código.

Para obtener más información, vea Tipos de directivas de autorización de aplicaciones en SharePoint 2013.

Nota:

La directiva de solo aplicación solo está disponible para complementos hospedados por el proveedor. Los complementos hospedados en SharePoint que acceden a la web host deben usar la directiva de usuario y aplicación.

Las ventajas de usar la directiva de solo aplicación en el complemento incluyen:

  • No es necesario conceder una licencia de usuario independiente. Las cuentas de servicio requieren una licencia de usuario independiente.

  • Obtiene un control más pormenorizado sobre los permisos de lo que está disponible con las cuentas de servicio. Por ejemplo, puede aplicar permisos FullControl en la web, lo que no es posible cuando se usan cuentas de servicio.

No puede usar la directiva de solo aplicación con las siguientes API:

  • Perfil de usuario

  • Búsqueda

Para usar la directiva de solo aplicación, primero debe conceder permisos al complemento mediante appinv.aspx. El código siguiente de AppManifest.xml archivo muestra cómo establecer la directiva de solo aplicación y los permisos para el complemento.

 <AppPermissionRequests AllowAppOnlyPolicy="true">
   <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="FullControl" />
 </AppPermissionRequests>

El uso de la directiva de solo aplicación requiere que el complemento use autorización de baja confianza o de confianza alta. La directiva no está disponible con la biblioteca javaScript entre dominios de SharePoint, que es una tercera forma de obtener acceso autorizado a los recursos de SharePoint.

app@sharepoint permiso ya no funciona en la interfaz de usuario del almacén de términos moderno. Esto se debe a app@sharepoint permiso ya no es necesario para que una aplicación realice operaciones de escritura de taxonomía, siempre y cuando la aplicación esté registrada en Azure AD con los consentimientos de recursos necesarios para el acceso a taxonomía solo de la aplicación.

Autorización de baja confianza

El complemento puede usar la autorización de baja confianza al usar el servicio de Access Control de Microsoft Azure (ACS) para establecer la confianza entre el complemento hospedado por el proveedor y el sitio de Office 365 o la granja de sharePoint local. Puede obtener más información en Tres sistemas de autorización para complementos de SharePoint 2013.

Importante

Con Azure ACS (Access Control Services) para SharePoint Online se ha retirado a partir del 27 de noviembre de 2023, consulte el anuncio de retirada completa para obtener más información. El uso de Azure ACS fuera del contexto de SharePoint ya se retiró el 7 de noviembre de 2018 y ya ha finalizado su vida útil.

La retirada significa que la característica no obtendrá inversiones nuevas, pero todavía se admite. El final del ciclo de vida significa que la característica se interrumpirá y ya no estará disponible para su uso.

Para obtener una referencia al objeto ClientContext , el complemento debe:

  1. Obtenga el token de acceso mediante TokenHelper.GetAppOnlyAccessToken.

  2. Use TokenHelper.GetClientContextWithAccessToken para obtener el objeto ClientContext.

Nota:

El archivo TokenHelper es código fuente generado por Microsoft Office Developer Tools para Visual Studio. No hay documentación de referencia para ella, pero hay muchos comentarios en la clase TokenHelper. Para ver los comentarios de código, cree un complemento hospedado por el proveedor en Visual Studio.

Nota:

el código de este artículo se proporciona tal cual, sin garantía de ningún tipo, ya sea expresa o implícita, incluidas las garantías implícitas de idoneidad para un propósito determinado, comerciabilidad o no infracción.

Uri siteUrl = new Uri(ConfigurationManager.AppSettings["MySiteUrl"]);
try
{
    // Connect to a site using an app-only token.
    string realm = TokenHelper.GetRealmFromTargetUrl(siteUrl);
    var token = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, siteUrl.Authority, realm).AccessToken;

    using (var ctx = TokenHelper.GetClientContextWithAccessToken(siteUrl.ToString(), token))
    {
        // Perform operations on the ClientContext object, which uses the app-only token. 
    }
}
catch (Exception ex)
{
    Console.WriteLine("Error in execution: " + ex.Message);
}

Autorización de elevada confianza

Si el complemento usa el sistema de autorización de alta confianza (también conocido como protocolo S2S), llama a un método TokenHelper diferente: TokenHelper.GetS2SAccessTokenWithWindowsIdentity.

Importante:TokenHelper.GetS2SAccessTokenWithWindowsIdentity se usa para las llamadas de solo aplicación y de usuario y aplicación. El segundo parámetro del método, que contiene la identidad de usuario, determina qué directiva se usa. Pase null para usar la directiva de solo aplicación.

Cuentas de servicio

Use cuentas de servicio para elevar los privilegios del complemento solo cuando la directiva de solo aplicación no proporcione permisos suficientes para completar la tarea. Además, en determinados escenarios se requiere una cuenta de usuario. Por ejemplo, debe usar cuentas de servicio cuando el código funcione con cualquiera de las siguientes aplicaciones de servicio de SharePoint:

  • Servicio de perfil de usuario mediante el modelo de objetos del lado cliente (CSOM)

  • Servicio de metadatos administrados

  • Búsqueda

Al planear el uso de cuentas de servicio en el complemento, tenga en cuenta lo siguiente:

  • Las cuentas de servicio requieren una licencia de usuario independiente.

  • Cree una cuenta de servicio por complemento o use una cuenta de servicio para todos los complementos del entorno de SharePoint.

  • Debe proporcionar el nombre de usuario y la contraseña durante la autorización. Asegúrese de que las credenciales de la cuenta de servicio se almacenan o recuperan de forma segura.

  • Antes de que el complemento pueda realizar una acción en un sitio, primero se debe conceder permiso a las cuentas de servicio para acceder al sitio.

Nota:

Los complementos comprados en la Tienda Office no pueden usar cuentas de servicio.

En el código siguiente se muestra cómo autenticarse mediante SharePointOnlineCredentials con una cuenta de servicio.

using (ClientContext context = new ClientContext("https://contoso.sharepoint.com"))
{

    // Use default authentication mode.
    context.AuthenticationMode = ClientAuthenticationMode.Default;  

    // Specify the credentials for the service account.
    context.Credentials = new SharePointOnlineCredentials("User Name", "Password");
}

Vea también