Partager via


Privilèges élevés

Utilisez la stratégie d’application uniquement ou les comptes de service pour élever les privilèges dans les compléments SharePoint ou d’autres solutions hébergées à distance.

S’applique à : applications pour SharePoint | SharePoint 2013 | Compléments SharePoint | SharePoint Online

Plusieurs méthodes sont utilisées pour élever les privilèges dans les compléments et solutions de batterie de serveurs SharePoint. Les solutions de batterie élèvent les privilèges à l’aide de RunWithElevatedPrivileges(SPSecurity.CodeToRunElevated), qui appartient au modèle objet côté serveur SharePoint. Les compléments SharePoint se servent de la stratégie application uniquement ou comptes de service.

Vous pouvez utiliser des privilèges élevés dans votre complément dans les cas suivants :

  • Votre complément effectue des actions pour les utilisateurs que les utilisateurs ne disposent pas des autorisations individuelles adéquates pour effectuer. Les administrateurs peuvent ne pas attribuer certaines autorisations aux utilisateurs, car le niveau d’autorisation est trop élevé.

    Votre organization peut, par exemple, implémenter une solution d’approvisionnement de collection de sites personnalisée que les utilisateurs doivent utiliser pour créer des collections de sites. Votre organization peut spécifier que certaines listes, types de contenu ou champs doivent être associés à toutes les nouvelles collections de sites. Si les utilisateurs créent des collections de sites par eux-mêmes, ils peuvent ou non se rappeler de créer ces objets sur leur nouvelle collection de sites. Dans ce scénario, les utilisateurs créent des collections de sites à l’aide du complément, mais les utilisateurs ne disposent pas d’autorisations individuelles pour créer des collections de sites.

  • Votre complément n’agit pas pour le compte d’un utilisateur ; par exemple, un processus de gouvernance ou de gestion.

Autorisation de stratégie d’application uniquement

La stratégie d’application uniquement utilise OAuth pour authentifier votre complément. Lorsque votre complément utilise la stratégie d’application uniquement, SharePoint vérifie uniquement les autorisations du principal de complément. Il s’agit des autorisations qui ont été accordées au complément. L’autorisation réussit si le complément dispose d’autorisations suffisantes pour effectuer la tâche, quelles que soient les autorisations associées à l’utilisateur actuel. Lorsque l’autorisation réussit, un jeton d’accès est retourné à votre complément. Votre complément utilisera ce jeton d’accès pour effectuer toutes les opérations requises par votre code.

Pour plus d’informations, voir Types de stratégies d’autorisation d’application dans SharePoint 2013.

Remarque

La stratégie d’application uniquement est disponible uniquement pour les compléments hébergés par un fournisseur. Les compléments hébergés par SharePoint qui accèdent au site web hôte doivent utiliser la stratégie utilisateur+application.

Les avantages de l’utilisation de la stratégie d’application uniquement dans votre complément sont les suivants :

  • Vous n’avez pas besoin d’accorder une licence utilisateur distincte. Les comptes de service nécessitent une licence utilisateur distincte.

  • Vous bénéficiez d’un contrôle plus précis sur les autorisations que celui disponible avec les comptes de service. Par exemple, vous pouvez appliquer des autorisations FullControl sur votre site web, ce qui n’est pas possible lorsque vous utilisez des comptes de service.

Vous ne pouvez pas utiliser la stratégie d’application uniquement avec les API suivantes :

  • Profil utilisateur

  • Rechercher

Pour utiliser la stratégie d’application uniquement, vous devez d’abord accorder des autorisations au complément à l’aide de appinv.aspx. Le code suivant de AppManifest.xml fichier montre comment définir la stratégie d’application uniquement et les autorisations pour votre complément.

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

L’utilisation de la stratégie d’application uniquement nécessite que votre complément utilise une autorisation à faible niveau de fiabilité ou à haut niveau de fiabilité. La stratégie n’est pas disponible avec la bibliothèque JavaScript inter-domaines SharePoint, qui est une troisième façon d’obtenir un accès autorisé aux ressources SharePoint.

app@sharepoint autorisation ne fonctionne plus dans l’interface utilisateur du magasin de termes moderne. En effet, app@sharepoint autorisation n’est plus nécessaire pour qu’une application effectue des opérations d’écriture de taxonomie, tant que l’application est inscrite dans Azure AD avec les consentements de ressource requis pour l’accès à la taxonomie d’application uniquement.

Autorisation à faible niveau de fiabilité

Votre complément peut utiliser l’autorisation à faible niveau de fiabilité lors de l’utilisation de Microsoft Azure Access Control Service (ACS) pour établir l’approbation entre votre complément hébergé par un fournisseur et votre site Office 365 ou votre batterie de serveurs SharePoint locale. Pour en savoir plus, consultez Trois systèmes d’autorisation pour les compléments SharePoint 2013.

Importante

L’utilisation d’Azure ACS (Access Control Services) pour SharePoint Online a été mise hors service depuis le 27 novembre 2023, consultez l’annonce de mise hors service complète pour en savoir plus. L’utilisation d’Azure ACS en dehors du contexte de SharePoint a déjà été mise hors service le 7 novembre 2018 et est maintenant en fin de vie.

La mise hors service signifie que la fonctionnalité ne recevra aucun nouvel investissement, mais qu’elle est toujours prise en charge. La fin de vie signifie que la fonctionnalité sera abandonnée et qu’elle n’est plus disponible.

Pour obtenir une référence à l’objet ClientContext , votre complément doit :

  1. Obtenez le jeton d’accès à l’aide de TokenHelper.GetAppOnlyAccessToken.

  2. Utilisez TokenHelper.GetClientContextWithAccessToken pour obtenir l’objet ClientContext.

Remarque

Le fichier TokenHelper est le code source généré par les outils de développement Microsoft Office pour Visual Studio. Il n’existe aucune documentation de référence, mais la classe TokenHelper contient des commentaires détaillés. Pour afficher les commentaires de code, créez un complément hébergé par un fournisseur dans Visual Studio.

Remarque

le code du présent article est fourni tel quel, sans garantie d’aucune sorte, expresse ou implicite, y compris toute garantie implicite d’adéquation à un usage particulier, de qualité marchande ou d’absence de contrefaçon.

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

Autorisation à haut niveau de fiabilité

Si votre complément utilise le système d’autorisation à haut niveau de fiabilité (également appelé protocole S2S), il appelle une autre méthode TokenHelper : TokenHelper.GetS2SAccessTokenWithWindowsIdentity.

Important:TokenHelper.GetS2SAccessTokenWithWindowsIdentity est utilisé pour les appels d’application uniquement et d’utilisateur+application. Le deuxième paramètre de la méthode, qui contient l’identité de l’utilisateur, détermine la stratégie utilisée. Passez null pour utiliser la stratégie d’application uniquement.

Comptes de service

Utilisez des comptes de service pour élever des privilèges pour votre complément uniquement lorsque la stratégie d’application uniquement ne fournit pas les autorisations suffisantes pour terminer votre tâche. En outre, dans certains scénarios, un compte d’utilisateur est requis. Par exemple, vous devez utiliser des comptes de service lorsque votre code fonctionne avec l’une des applications de service SharePoint suivantes :

  • Service de profil utilisateur utilisant le modèle objet côté client (CSOM)

  • Service de métadonnées gérées

  • Recherche

Lorsque vous envisagez d’utiliser des comptes de service dans votre complément, tenez compte des points suivants :

  • Les comptes de service nécessitent une licence utilisateur distincte.

  • Créez un compte de service par complément ou utilisez un compte de service pour tous les compléments de votre environnement SharePoint.

  • Vous devez fournir le nom d’utilisateur et le mot de passe lors de l’autorisation. Vérifiez que les informations d’identification du compte de service sont stockées ou récupérées en toute sécurité.

  • Avant que votre complément puisse effectuer une action sur un site, les comptes de service doivent d’abord être autorisés à accéder au site.

Remarque

Les compléments achetés à partir de l’Office Store ne peuvent pas utiliser de comptes de service.

Le code suivant montre comment s’authentifier à l’aide de SharePointOnlineCredentials avec un compte de service.

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

Voir aussi