Octroi de l’accès à l’aide SharePoint App-Only

SharePoint App-Only modèle plus ancien, mais toujours très pertinent, de configuration des principaux d’application. Ce modèle fonctionne pour SharePoint Online et SharePoint 2013/2016/2019 local et est idéal pour préparer vos applications pour la migration de SharePoint local vers SharePoint Online. Les étapes ci-dessous montrent comment configurer un principal d’application avec des autorisations de contrôle total client, mais vous pouvez évidemment accorder des autorisations de lecture uniquement à l’aide de cette approche.

Important

Azure Access Control (ACS), un service de Azure Active Directory (Azure AD), a été retiré le 7 novembre 2018. Ce retrait n?a aucune incidence sur le mod?le de compl?ments SharePoint, qui utilise lehttps://accounts.accesscontrol.windows.net nom d?h?te (qui n?est pas affect? par ce retrait). Pour plus d’informations, consultez l’impact du retrait d’Azure Access Control pour SharePoint des modules complémentaires. Pour les nouveaux locataires, les applications utilisant un jeton d’accès d’application ACS uniquement sont désactivées par défaut. Nous vous recommandons d’utiliser le modèle d’application Azure AD uniquement, moderne et plus sécurisé. Toutefois, vous pouvez modifier le comportement en exécutant « set-spotenant -DisableCustomAppAuthentication $false » (nécessite la dernière SharePoint’administration PowerShell).

Configuration d’un principal d’application uniquement avec des autorisations client

Accédez à un site dans votre client (par exemple, puis appelez la https://contoso.sharepoint.com) page appregnew.aspx (par exemple, https://contoso.sharepoint.com/_layouts/15/appregnew.aspx) . Dans cette page, cliquez sur le bouton Générer pour générer un ID client et une question secrète client, puis remplissez les informations restantes comme indiqué dans la capture d’écran ci-dessous.

Créer un nouveau secret d’ID & client

Important

Stockez les informations récupérées (ID client et secret client), car vous en aurez besoin à l’étape suivante !

L’étape suivante consiste à accorder des autorisations au principal nouvellement créé. Étant donné que nous accordons des autorisations étendues au client, cette octroi peut uniquement être effectué via la page appinv.aspx sur le site d’administration des locataires. Vous pouvez accéder à ce site via https://contoso-admin.sharepoint.com/_layouts/15/appinv.aspx . Une fois la page chargée, ajoutez votre ID client et recherchez le principal créé :

Accorder des autorisations à un nouveau principal

Pour accorder des autorisations, vous devez fournir le XML d’autorisation qui décrit les autorisations nécessaires. Étant donné que cette application doit pouvoir accéder à tous les sites + utilise également la recherche avec application uniquement, elle a besoin des autorisations ci-dessous :

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

Lorsque vous cliquez sur Créer, une boîte de dialogue de consentement d’autorisation s’est présentée. Appuyez sur Trust It pour accorder les autorisations :

utilisation d’appregnew.aspx

Important

Veuillez protéger la combinaison id/secret client créée, comme le ferait votre compte d’administrateur. L’utilisation de cet ID client/secret permet de lire/mettre à jour toutes les données de votre environnement SharePoint Online !

Une fois le travail de préparation terminé, passons au chapitre suivant qui montre comment utiliser le principal d’application créé via sa combinaison d’ID client et de secret.

Utilisation de ce principal avec PnP PowerShell

Si vous souhaitez utiliser l’inscription d’application uniquement générée avec PnP PowerShell,vous pouvez le faire en vous connectant à votre environnement SharePoint local ou en ligne à l’aide de :

Connect-PnPOnline -Url https://contoso.sharepoint.com/sites/demo -ClientId [Your Client ID] -ClientSecret "[Your Client Secret]"

Notes

PnP PowerShell est une solution open source pour laquelle un support est assuré par la communauté active. Il n’existe pas de contrat SLA Microsoft pour le support technique relatif à cet outil open source.

Utilisation de ce principal dans votre application à l’aide de la bibliothèque SharePoint sites PnP Core

Dans une première étape, vous ajoutez le package nuget SharePoint de bibliothèque PnP Sites Core : https://www.nuget.org/packages/SharePointPnPCoreOnline . Une fois cette procédure effectuée, vous pouvez utiliser la construction de code ci-dessous :

string siteUrl = "https://contoso.sharepoint.com/sites/demo";
using (var cc = new AuthenticationManager().GetAppOnlyAuthenticatedContext(siteUrl, "[Your Client ID]", "[Your Client Secret]"))
{
    cc.Load(cc.Web, p => p.Title);
    cc.ExecuteQuery();
    Console.WriteLine(cc.Web.Title);
};

Utilisation de ce principal dans votre application sans utiliser la bibliothèque PnP Sites Core

Une fois le principal créé et accepté, vous pouvez utiliser l’ID et la secret du principal pour demander un accès. La classe TokenHelper.cs récupérera l’ID et la secret du fichier de configuration de l’application.

using Microsoft.SharePoint.Client;
using System;

namespace AzureACSAuth
{
    class Program
    {
        static void Main(string[] args)
        {
            string siteUrl = "https://contoso.sharepoint.com/sites/demo";

            //Get the realm for the URL
            string realm = TokenHelper.GetRealmFromTargetUrl(new Uri(siteUrl));

            //Get the access token for the URL.  
            string accessToken = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, new Uri(siteUrl).Authority, realm).AccessToken;

            //Create a client context object based on the retrieved access token
            using (ClientContext cc = TokenHelper.GetClientContextWithAccessToken(siteUrl, accessToken))
            {
                cc.Load(cc.Web, p => p.Title);
                cc.ExecuteQuery();
                Console.WriteLine(cc.Web.Title);
            }
        }
    }
}

Un exemple app.config se ressemble :

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <!-- Use AppRegNew.aspx and AppInv.aspx to register client id with secret -->
    <add key="ClientId" value="[Your Client ID]" />
    <add key="ClientSecret" value="[Your Client Secret]" />
  </appSettings>
</configuration>

Notes

Vous pouvez facilement insérer la classe TokenHelper.cs dans votre projet en ajoutant le package nuget AppForSharePointOnlineWebToolkit à votre solution.