Octroi d'accès à l'aide de SharePoint App uniquementGranting access using SharePoint App-Only

Application SharePoint uniquement est le modèle de configuration des principaux d'application, mais toujours très pertinent.SharePoint App-Only is the older, but still very relevant, model of setting up app-principals. Ce modèle fonctionne pour SharePoint Online et SharePoint 2013/2016 en local et est idéal pour préparer vos applications pour la migration de SharePoint en local vers SharePoint Online.This model works for both SharePoint Online and SharePoint 2013/2016 on-premises and is ideal to prepare your applications for migration from SharePoint on-premises to SharePoint Online. Les étapes ci-dessous indiquent comment configurer un principal d'application avec des autorisations de contrôle total client, mais évidemment vous pouvez également accorder des autorisations de lecture uniquement à l'aide de cette approche.Below steps show how to setup an app principal with tenant full control permissions, but obviously you could also grant just read permissions using this approach.

Important

Azure Access Control (ACS), a service of Azure Active Directory (Azure AD), will be retired on November 7, 2018. This retirement does not impact the SharePoint Add-in model, which uses the https://accounts.accesscontrol.windows.net hostname (which is not impacted by this retirement). For more information, see Impact of Azure Access Control retirement for SharePoint Add-ins.Azure Access Control (ACS), a service of Azure Active Directory (Azure AD), will be retired on November 7, 2018. This retirement does not impact the SharePoint Add-in model, which uses the https://accounts.accesscontrol.windows.net hostname (which is not impacted by this retirement). For more information, see Impact of Azure Access Control retirement for SharePoint Add-ins.

Configuration d'un principal d'application uniquement avec des autorisations clientSetting up an app-only principal with tenant permissions

Accédez à un site dans votre client (par exemple https://contoso.sharepoint.com) , puis appelez la page appregnew. aspx (par exemple https://contoso.sharepoint.com/_layouts/15/appregnew.aspx):.Navigate to a site in your tenant (e.g. https://contoso.sharepoint.com) and then call the appregnew.aspx page (e.g. 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 clé secrète client et renseignez les informations restantes comme indiqué dans la capture d'écran ci-dessous.In this page click on the Generate button to generate a client id and client secret and fill the remaining information like shown in the screen-shot below.

utilisation de appregnew. aspx

Important

Stockez les informations extraites (ID client et clé secrète client), car vous en aurez besoin à l'étape suivante.Store the retrieved information (client id and client secret) since you'll need this in the next step!

L'étape suivante consiste à accorder des autorisations au principal nouvellement créé.Next step is granting permissions to the newly created principal. Étant donné que nous accordons des autorisations d'étendue client, vous pouvez uniquement les autoriser via la page appinv. aspx sur le site d'administration des clients.Since we're granting tenant scoped permissions this granting can only be done via the appinv.aspx page on the tenant administration site. Vous pouvez accéder à ce site https://contoso-admin.sharepoint.com/_layouts/15/appinv.aspxvia.You can reach this 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éé:Once the page is loaded add your client id and look up the created principal:

utilisation de appregnew. aspx

Pour accorder des autorisations, vous devez fournir le code XML d'autorisation qui décrit les autorisations nécessaires.To grant permissions, you'll need to provide the permission XML that describes the needed permissions. Étant donné que cette application doit pouvoir accéder à tous les sites, elle utilise également la recherche avec application uniquement dont les autorisations sont les suivantes:Since this application needs to be able to access all sites + also uses search with app-only it needs below permissions:

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

Lorsque vous cliquez sur créer, vous voyez s'afficher une boîte de dialogue de consentement.When you click on Create you'll be presented with a permission consent dialog. Appuyez sur approuver pour accorder les autorisations:Press Trust It to grant the permissions:

utilisation de appregnew. aspx

Important

Veuillez protéger la combinaison ID/secret client créée comme s'il s'agissait de votre compte d'administrateur.Please safeguard the created client id/secret combination as would it be your administrator account. À l'aide de cet ID client/clé secrète, il est possible de lire/mettre à jour toutes les données de votre environnement SharePoint Online!Using this client id/secret one can read/update all data in your SharePoint Online environment!

Une fois le travail de préparation achevé, nous allons passer au chapitre suivant illustrant la façon dont vous pouvez utiliser le principal d'application créé via sa combinaison ID client et clé secrète.With the preparation work done let's continue to the next chapter showing how you can use the created app principal via its client id and secret combination.

Utilisation de ce principal dans votre application à l'aide de la bibliothèque de composants principaux des sites PnP SharePointUsing this principal in your application using the SharePoint PnP Sites Core library

Dans une première étape, vous devez ajouter le package NuGet de la bibliothèque principale des https://www.nuget.org/packages/SharePointPnPCoreOnlinesites PNP SharePoint:.In a first step, you add the SharePoint PnP Sites Core library nuget package: https://www.nuget.org/packages/SharePointPnPCoreOnline. Une fois cette opération terminée, vous pouvez utiliser la construction de code ci-dessous:Once that’s done you can use below code construct:

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 de composants principaux de sites PnPUsing this principal in your application without using the PnP Sites Core library

Une fois le principal créé et accepté, vous pouvez utiliser l'ID et la clé secrète de l'entité de sécurité pour demander un accès.Once the principal is created and consented you can use the principal's id and secret to request an access. La classe TokenHelper.cs récupère l'ID et la clé secrète à partir du fichier de configuration de l'application.The TokenHelper.cs class will grab the id and secret from the application's configuration file.

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 présente comme suit:A sample app.config looks like this:

<?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.You can easily insert the TokenHelper.cs class in your project by adding the AppForSharePointOnlineWebToolkit nuget package to your solution.