Octroi de l’accès à l’aide de SharePoint App-Only
SharePoint App-Only est le 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 en local et est idéal pour préparer vos applications à 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 du locataire, mais évidemment, vous pouvez également accorder des autorisations de lecture uniquement à l’aide de cette approche.
Importante
Azure Access Control (ACS), un service d’Azure Active Directory (Azure AD), a été mis hors service 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 Impact de la mise hors service d’Azure Access Control pour les compléments SharePoint. Pour les nouveaux locataires, les applications qui utilisent un jeton d’accès uniquement aux applications ACS sont désactivées par défaut. Nous vous recommandons d’utiliser le modèle d’application uniquement Azure AD, qui est moderne et plus sécurisé. Toutefois, vous pouvez modifier le comportement en exécutant « set-spotenant -DisableCustomAppAuthentication $false » (nécessite la dernière version de PowerShell d’administrateur SharePoint).
Configuration d’un principal d’application uniquement avec des autorisations de locataire
Accédez à un site dans votre locataire (par exemple https://contoso.sharepoint.com), puis appelez la 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 clé secrète client, puis renseignez les informations restantes, comme indiqué dans la capture d’écran ci-dessous.
Importante
Stockez les informations récupérées (ID client et clé secrète 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 locataire, cette octroi ne peut être effectué que via la page appinv.aspx du site d’administration du locataire. 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éé :
Pour accorder des autorisations, vous devez fournir le code 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 l’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’affiche. Appuyez sur Approuver pour accorder les autorisations :
Importante
Protégez la combinaison id client/secret créée, comme il s’agirait de votre compte d’administrateur. À l’aide de cet ID client/secret, vous pouvez lire/mettre à jour toutes les données de votre environnement SharePoint Online .
Une fois le travail de préparation terminé, nous allons passer 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]"
Remarque
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 PnP Framework
Dans une première étape, vous ajoutez le package nuget de la bibliothèque PnP Framework : https://www.nuget.org/packages/PnP.Framework. Une fois cette opération effectuée, vous pouvez utiliser la construction de code ci-dessous :
string siteUrl = "https://contoso.sharepoint.com/sites/demo";
using (var cc = new AuthenticationManager().GetACSAppOnlyContext(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 Framework
Une fois le principal créé et accepté, vous pouvez utiliser l’ID et le secret du principal pour demander un accès. La classe TokenHelper.cs récupère l’ID et le secret à partir 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);
}
}
}
}
Voici un exemple de app.config :
<?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>
Remarque
Vous pouvez facilement insérer la classe TokenHelper.cs dans votre projet en ajoutant le package nuget AppForSharePointOnlineWebToolkit à votre solution.