Compartilhar via


Privilégios elevados

Use a política ou contas de serviço somente aplicativo para elevar privilégios em suplementos do SharePoint ou em outras soluções hospedadas remotamente.

Aplica-se a: aplicativos para o SharePoint | SharePoint 2013 | Suplementos do SharePoint | SharePoint Online

Diferentes métodos são usados para elevar privilégios em soluções de suplementos do SharePoint e de farm. As soluções farm elevam privilégios usando RunWithElevatedPrivileges(SPSecurity.CodeToRunElevated), que pertence ao modelo de objeto do lado do servidor do SharePoint. Suplementos do SharePoint usam a política de somente aplicativo ou contas de serviço.

Talvez você queira usar privilégios elevados em seu suplemento quando:

  • Seu suplemento executa ações para usuários que os usuários não têm permissões individuais adequadas para serem concluídas. Os administradores podem não atribuir aos usuários determinadas permissões porque o nível de permissão é muito alto.

    Sua organização pode, por exemplo, implementar uma solução de provisionamento de coleção de sites personalizada que os usuários devem usar para criar coleções de sites. Sua organização pode especificar que todas as novas coleções de sites devem ter determinadas listas, tipos de conteúdo ou campos associados a elas. Se os usuários criarem coleções de sites por conta própria, eles poderão ou não se lembrar de criar esses objetos em sua nova coleção de sites. Nesse cenário, os usuários criam coleções de sites usando o suplemento, mas os usuários não recebem permissões individualmente para criar coleções de sites.

  • Seu suplemento não está agindo em nome de nenhum usuário; por exemplo, um processo de governança ou gerenciamento.

Autorização de política somente aplicativo

A política somente aplicativo usa o OAuth para autenticar seu suplemento. Quando o suplemento usa a política somente aplicativo, o SharePoint verifica apenas as permissões da entidade de suplemento. Estas são as permissões concedidas ao suplemento. A autorização será bem-sucedida se o suplemento tiver permissões suficientes para executar a tarefa, independentemente das permissões associadas ao usuário atual. Quando a autorização é bem-sucedida, um token de acesso é retornado ao seu suplemento. Seu suplemento usará esse token de acesso para executar todas as operações exigidas pelo código.

Para obter mais informações, consulte Tipos de política de autorização de aplicativo no SharePoint 2013.

Observação

A política somente aplicativo está disponível apenas para suplementos hospedados pelo provedor. Os suplementos hospedados pelo SharePoint que acessam a Web do host devem usar a política user+app.

Os benefícios de usar a política somente aplicativo em seu suplemento incluem:

  • Você não precisa conceder uma licença de usuário separada. As contas de serviço exigem uma licença de usuário separada.

  • Você obtém mais controle granular sobre permissões do que está disponível com contas de serviço. Por exemplo, você pode aplicar permissões FullControl em sua Web, o que não é possível quando você usa contas de serviço.

Você não pode usar a política somente aplicativo com as seguintes APIs:

  • Perfil de Usuário

  • Pesquisar

Para usar a política somente aplicativo, primeiro você deve conceder permissões ao suplemento usando appinv.aspx. O código a seguir de AppManifest.xml arquivo mostra como definir a política somente aplicativo e as permissões para seu suplemento.

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

O uso da política somente aplicativo exige que seu suplemento use autorização de baixa confiança ou de alta confiança. A política não está disponível com a biblioteca JavaScript entre domínios do SharePoint, que é uma terceira maneira de obter acesso autorizado aos recursos do SharePoint.

app@sharepoint permissão não funciona mais na interface do usuário do repositório de termo moderno. Isso porque app@sharepoint permissão não é mais necessária para que um aplicativo execute operações de gravação de taxonomia, desde que o aplicativo seja registrado em Azure AD com os consentimentos de recurso necessários para acesso à taxonomia somente aplicativo.

Autorização de baixa confiança

Seu suplemento pode usar autorização de baixa confiança ao usar o ACS (Serviço de Controle de Acesso do Microsoft Azure) para estabelecer a confiança entre o suplemento hospedado pelo provedor e seu site Office 365 ou seu farm do SharePoint local. Você pode saber mais em Três sistemas de autorização para Suplementos do SharePoint 2013.

Importante

O uso do Azure ACS (Controle de Acesso Services) para o SharePoint Online foi desativado a partir de 27 de novembro de 2023, confira o comunicado completo de aposentadoria para saber mais. O uso do ACS do Azure fora do contexto do SharePoint já foi desativado em 7 de novembro de 2018 e agora é o fim da vida útil.

A aposentadoria significa que o recurso não receberá novos investimentos, mas ainda tem suporte. O fim da vida útil significa que o recurso será descontinuado e não está mais disponível para uso.

Para obter uma referência ao objeto ClientContext , seu suplemento deve:

  1. Obtenha o token de acesso usando TokenHelper.GetAppOnlyAccessToken.

  2. Use TokenHelper.GetClientContextWithAccessToken para obter o objeto ClientContext.

Observação

O arquivo TokenHelper é o código-fonte gerado pelas Ferramentas de Desenvolvedor do Microsoft Office para Visual Studio. Não há documentação de referência para isso, mas há comentários extensos na classe TokenHelper. Para ver os comentários de código, crie um suplemento hospedado pelo provedor no Visual Studio.

Observação

ele codifica neste artigo é fornecido como está, sem garantia de qualquer tipo, expresso ou implícito, incluindo quaisquer garantias implícitas de aptidão para uma finalidade específica, comercialização ou não violação.

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);
}

Autorização de alta confiança

Se o suplemento usar o sistema de autorização de alta confiança (também conhecido como protocolo S2S), ele chamará um método TokenHelper diferente: TokenHelper.GetS2SAccessTokenWithWindowsIdentity.

Importante: A entidade TokenHelper.GetS2SAccessTokenWithWindowsId é usada para chamadas somente aplicativo e user+app. O segundo parâmetro do método, que contém a identidade do usuário, determina qual política é usada. Passe nulo para usar a política somente aplicativo.

Contas de serviço

Use contas de serviço para elevar privilégios para seu suplemento somente quando a política somente aplicativo não fornecer permissões suficientes para concluir sua tarefa. Além disso, em determinados cenários, uma conta de usuário é necessária. Por exemplo, você precisa usar contas de serviço quando seu código funciona com qualquer um dos seguintes aplicativos de serviço do SharePoint:

  • Serviço de Perfil de Usuário usando o CSOM (modelo de objeto do lado do cliente)

  • Serviço de metadados gerenciados

  • Pesquisar

Ao planejar usar contas de serviço no suplemento, considere o seguinte:

  • As contas de serviço exigem uma licença de usuário separada.

  • Crie uma conta de serviço por suplemento ou use uma conta de serviço para todos os suplementos em seu ambiente do SharePoint.

  • Você deve fornecer o nome de usuário e a senha durante a autorização. Verifique se as credenciais da conta de serviço são armazenadas ou recuperadas com segurança.

  • Antes que seu suplemento possa executar uma ação em um site, as contas de serviço primeiro devem receber permissão para acessar o site.

Observação

Os suplementos comprados na Office Store não podem usar contas de serviço.

O código a seguir mostra como autenticar usando o SharePointOnlineCredentials com uma conta de serviço.

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");
}

Confira também