Présentation du consentement spécifique à la ressource pour Microsoft Graph et SharePoint Online
Historiquement, dans Microsoft SharePoint, à la fois localement et en ligne, il existait la possibilité d’inscrire des applications dans Azure Access Control Services (ACS) avec des autorisations granulaires ciblant uniquement des collections de sites spécifiques. Grâce à cette technique, vous avez pu autoriser une application personnalisée à lire, écrire, gérer ou avoir un contrôle total sur des collections de sites spécifiques avec des autorisations d’application uniquement.
Toutefois, ACS n’est plus la meilleure option pour gérer l’inscription et la sécurité des applications pour SharePoint. Vous devez vous appuyer sur l’inscription d’application Microsoft Entra (anciennement Azure Active Directory) et sur OAuth. Par défaut, lorsque vous inscrivez une application dans Microsoft Entra et que vous pouvez configurer des autorisations d’application Microsoft Graph telles que Sites.Read.All, Sites.ReadWrite.All, Sites.Manage.All ou Sites.FullControl.All, qui sont des autorisations qui ciblent toutes les collections de sites dans le locataire cible, comme le mot All l’implique dans le nom des étendues d’autorisation.
La cible Tous n’est pas toujours bien accueillie par les clients, en particulier par les clients d’entreprise disposant de milliers de collections de sites, disposés à disposer d’autorisations plus précises, en étant en mesure de sélectionner les collections de sites cibles où l’application doit disposer d’autorisations de lecture, d’écriture, de gestion ou de contrôle total.
Importante
Cet article fait référence aux composants, exemples et/ou outils PnP qui sont des ressources open source soutenues par une communauté active qui les prend en charge. Il n’existe aucun contrat de niveau de service pour la prise en charge des outils open source des canaux de support Microsoft officiels. Toutefois, ces composants ou exemples utilisent des API et des fonctionnalités prêtes à l’emploi prises en charge par Microsoft.
Si vous préférez, vous pouvez watch la vidéo suivante, au lieu de lire l’article entier, que vous pouvez toujours considérer comme une référence beaucoup plus détaillée.
Remarque
Vous pouvez en savoir plus sur l’inscription d’applications dans Microsoft Entra au lieu de vous appuyer sur Azure ACS en lisant l’article Mise à niveau d’applications SharePoint à partir d’Azure Access Control Service vers Microsoft Entra.
Avec le consentement spécifique aux ressources (RSC), vous pouvez inscrire des applications dans Microsoft Entra et leur accorder des autorisations d’application uniquement qui peuvent cibler des collections de sites spécifiques uniquement, comme vous le faisiez avec ACS. Dans cet article, vous allez apprendre à tirer parti de cette fonctionnalité.
Inscription d’une application avec des autorisations de consentement spécifiques à la ressource
Pour inscrire une application Microsoft Entra avec l’autorisation RSC, vous devez simplement inscrire une application régulière dans Microsoft Entra. Toutefois, lorsque vous configurez les autorisations d’API de l’application, au lieu de sélectionner l’un des sites.<quelque chose>. Toutes les autorisations d’application pour Microsoft Graph, vous devez choisir l’autorisation d’application Sites.Selected , comme illustré dans la capture d’écran suivante.
Ensuite, un administrateur de locataire, qui peut rester vous, devra accorder l’autorisation d’application Sites.Selected à l’application.
Il existe également une autorisation d’application Sites.Selected pour SharePoint Online, au cas où vous souhaitez utiliser SharePoint Online via des API REST, au lieu de consommer SharePoint Online via Microsoft Graph. Dans la capture d’écran suivante, vous pouvez voir à quoi ressemble l’autorisation Sites.Selected pour SharePoint Online dans Microsoft Entra.
Octroi d’autorisations à une collection de sites spécifique
Une fois que l’autorisation d’application Sites.Selected est attribuée et accordée, l’application ne peut toujours pas accéder à une collection de sites cible. Pour pouvoir accéder à n’importe quel site cible, vous avez besoin d’un administrateur général client ou d’une application disposant de l’autorisation d’application Sites.FullControl.All pour accorder des autorisations explicites pour les sites cibles sélectionnés.
Octroi d’autorisations via Microsoft Graph
Pour accorder des autorisations aux sites cibles sélectionnés, vous pouvez utiliser une requête POST Microsoft API Graph, ciblant l’URL suivante :
https://graph.microsoft.com/v1.0/sites/{siteId}/permissions
Où {siteId} est l’ID unique Microsoft Graph de la collection de sites cible, avec un format semblable à celui-ci :
contoso.sharepoint.com,5a58bb09-1fba-41c1-8125-69da264370a0,9f2ec1da-0be4-4a74-9254-973f0add78fd
Le corps de la requête HTTP POST doit avoir une structure semblable à l’extrait de code suivant.
{
"roles": ["{role}"],
"grantedToIdentities": [{
"application": {
"id": "{clientId}",
"displayName": "{application-name}"
}
}]
}
Où {role} peut être l’une des valeurs suivantes, ou un tableau de l’une des valeurs suivantes :
- read : permet de lire les métadonnées et le contenu de l’élément.
- write : permet de lire et de modifier les métadonnées et le contenu de l’élément.
- manage : permet de lire et de modifier les métadonnées et le contenu de l’élément et de gérer le site.
- fullcontrol : fournit un contrôle total sur le site et son contenu.
L’attribut {client-id} est l’ID client réel de l’application Microsoft Entra et {application-name} est une description de l’application.
La réponse que vous obtiendrez de Microsoft Graph ressemblera au fichier JSON suivant.
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites('contoso.sharepoint.com,5a58bb09-1fba-41c1-8125-69da264370a0,9f2ec1da-0be4-4a74-9254-973f0add78fd')/permissions/$entity",
"id": "aTowaS50fG1zLnNwLmV4dHxlMDBiNWUzZi0yMzI1LTQ3MWQtOTljZi1iOGM5ZDlmNDU2N2FANmM5NDA3NWEtZGEwYS00YzZhLTg0MTEtYmFkZjY1MmU4YjUz",
"roles": [
"write"
],
"grantedToIdentitiesV2": [
{
"application": {
"displayName": "AddInGuidanceRSC",
"id": "e00b5e3f-2325-471d-99cf-b8c9d9f4567a"
}
}
],
"grantedToIdentities": [
{
"application": {
"displayName": "AddInGuidanceRSC",
"id": "e00b5e3f-2325-471d-99cf-b8c9d9f4567a"
}
}
]
}
Notez que la propriété id dans la réponse représente l’ID unique permettant d’identifier l’autorisation affectée personnalisée. À l’aide de cet ID, vous pouvez également gérer les autorisations sélectionnées déjà affectées à l’aide de REST et effectuer des requêtes GET, PATCH ou DELETE ciblant le point de terminaison permissions/{permission-id} de la collection de sites cible, où {permission-id} représente l’ID unique de l’autorisation.
De toute évidence, vous pouvez également choisir d’utiliser le Kit de développement logiciel (SDK) Microsoft Graph pour gérer les autorisations, au lieu de vous appuyer sur des requêtes HTTP de bas niveau.
Octroi d’autorisations via PnP PowerShell
Pour accorder et gérer des autorisations sur les sites cibles sélectionnés, vous pouvez également utiliser un ensemble d’applets de commande PowerShell PnP :
- Grant-PnPAzureAdAppSitePermission : ajoute des autorisations pour une inscription d’application Microsoft Entra donnée.
- Get-PnPAzureAdAppSitePermission : retourne Microsoft Entra autorisations d’application pour un site.
- Set-PnPAzureAdAppSitePermission : met à jour les autorisations pour une inscription d’application Microsoft Entra donnée.
- Revoke-PnPAzureAdAppSitePermission : révoque les autorisations pour une application donnée.
Par exemple, si vous souhaitez accorder une autorisation d’écriture à une application cible pour un site sélectionné, vous pouvez utiliser la syntaxe PowerShell suivante :
Grant-PnPAzureADAppSitePermission -AppId {client-id} -DisplayName {display-name} -Permissions <Read|Write|Manage|FullControl> -Site {site-object}
Comme avec le point de terminaison Microsoft Graph, l’argument {client-id} est l’ID client de l’application Microsoft Entra et {display-name} est une description de l’application. L’argument Permissions peut être une ou plusieurs des valeurs suivantes :
- Lecture : permet de lire les métadonnées et le contenu de l’élément.
- Écriture : permet de lire et de modifier les métadonnées et le contenu de l’élément.
- Gérer : permet de lire et de modifier les métadonnées et le contenu de l’élément et de gérer le site.
- FullControl : fournit un contrôle total sur le site et son contenu.
La valeur {site-object} peut être un objet de site récupéré à l’aide de l’applet de commande Get-PnPSite , ou peut être omise de cibler en tant que site sélectionné celui auquel vous êtes connecté avec l’applet de commande Connect-PnPOnline .
La sortie d’une telle commande ressemblera à la suivante, dans la console PowerShell.
Id : aTowaS50fG1zLnNwLmV4dHxlMDBiNWUzZi0yMzI1LTQ3MWQtOTljZi1iOGM5ZDlmNDU2N2FANmM5NDA3NWEtZGEwYS00YzZhLTg0MTEtYmFkZjY
1MmU4YjUz
Roles : {fullcontrol}
Apps : {AddInGuidanceRSC, e00b5e3f-2325-471d-99cf-b8c9d9f4567a}
Notez que l’applet de commande retourne l’autorisation accordée et l’ID unique de l’objet d’autorisation.
Si vous souhaitez mettre à jour une attribution d’autorisation pour un site sélectionné, vous pouvez utiliser une syntaxe PowerShell comme celle-ci :
Set-PnPAzureADAppSitePermission -PermissionId {permission-id} -Permissions <Read|Write|Manage|FullControl>
Où l’argument {permission-id} est l’ID que vous avez obtenu lors de l’appel de l’applet de commande Grant-PnPAzureADAppSitePermission .
Si vous souhaitez révoquer une autorisation accordée à partir d’un site sélectionné, vous pouvez utiliser l’applet de commande Revoke-PnPAzureADAppSitePermission avec la syntaxe suivante.
Revoke-PnPAzureADAppSitePermission -PermissionId {permission-id}
Remarque
Dans le dossier d’exemples associé à cet article, vous trouverez un exemple de script PowerShell qui montre comment utiliser les applets de commande PowerShell PnP pour RSC.
Consommation de la collection de sites cible
Une fois que vous avez inscrit une application Microsoft Entra avec l’autorisation Sites.Selected application, soit avec Microsoft Graph, soit avec SharePoint Online, soit avec les deux, vous pouvez commencer à consommer les collections de sites sélectionnées en fonction des autorisations accordées.
Vous devez demander un jeton d’accès d’application uniquement à Microsoft Entra et commencer à consommer les collections de sites sélectionnées. Si vous ciblez un site pour lequel votre application a reçu des autorisations, vous réussirez à le faire. Si vous ciblez une autre collection de sites pour laquelle votre application n’a pas reçu d’autorisations, votre code échoue et une exception « Accès refusé » s’affiche.
Si vous souhaitez en savoir plus sur la façon d’utiliser SharePoint Online via l’API REST SharePoint ou via Microsoft Graph à l’aide d’un jeton d’application uniquement, vous pouvez lire la section Consommation de SharePoint Online en mode application uniquement via une application inscrite Azure AD de l’article Mise à niveau d’applications SharePoint à partir d’Azure Access Control Service vers Microsoft Entra.
Remarque
Dans le dossier d’exemples associé à cet article, vous trouverez un exemple d’application console .NET 6 qui montre comment utiliser des sites SharePoint Online en tirant parti du modèle RSC.
Contenu recommandé
Vous trouverez des informations supplémentaires sur cet article en lisant les documents suivants :