Mise à niveau d’applications SharePoint d’Azure Access Control Service vers Azure Active Directory
Le modèle de complément SharePoint vous permet d’inscrire des applications dans Azure Access Control Service (ACS) afin d’obtenir un accès d’application uniquement à vos ressources SharePoint Online. Selon la façon dont vous configurez l’accès à l’application uniquement, vous pouvez accorder différents niveaux d’autorisation de lecture seule à contrôle total. Dans les articles « Accès à SharePoint à l’aide d’un contexte d’application, également appelé application uniquement » et « Octroi de l’accès à l’aide de SharePoint App-Only », vous trouverez des instructions pas à pas sur la configuration de ce type d’applications.
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é.
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.
Toutefois, le modèle de complément SharePoint est un ancien modèle et il existe des modèles de développement plus récents, plus modernes et plus polyvalents comme, par exemple, le SharePoint Framework. En outre, d’un point de vue technique, les autorisations accordées à une application uniquement inscrite avec le modèle de complément SharePoint obtiennent l’accès à l’ensemble du locataire, et vous ne pouvez pas choisir de manière sélective les collections de sites cibles pour lesquelles vous souhaitez accorder des autorisations.
Comme alternative appropriée et plus sécurisée, vous pouvez vous appuyer sur l’inscription d’une application dans Azure Active Directory (Azure AD) à l’aide du modèle RSC (Resource Specific Consent), qui est abordé dans l’article « Understanding Resource Specific Consent for Microsoft Graph and SharePoint Online », afin de cibler uniquement des collections de sites spécifiques, au lieu de l’ensemble du locataire.
Dans cet article, vous trouverez des informations détaillées sur le fonctionnement du modèle d’inscription d’application Azure AD et sur la mise à niveau vers le modèle Azure AD d’une application déjà existante inscrite dans ACS avec le modèle de complément SharePoint.
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.
Mise à niveau d’ACS vers Azure AD
Dans cette section, nous supposons que vous disposez déjà d’une application d’application uniquement inscrite dans SharePoint Online, à l’aide du modèle de complément SharePoint et d’ACS.
Application à partir de laquelle migrer
Dans la capture d’écran ci-dessous, vous pouvez voir un exemple de configuration pour l’application inscrite dans ACS à l’aide de l’URL https://[your-tenant].sharepoint.com/_layouts/15/appregnew.aspx
de votre locataire cible.
L’application a obtenu le droit FullControl sur le locataire SharePoint Online cible via la stratégie suivante, qui a été inscrite via l’URL https://[your-tenant]-admin.sharepoint.com/_layouts/15/appinv.aspx
de SharePoint Online Administration Central.
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" />
</AppPermissionRequests>
Dans la capture d’écran suivante, vous pouvez voir les paramètres d’interface utilisateur utilisés pour accorder l’autorisation Contrôle total à l’application.
Nous supposons également que vous accédez à une collection de sites SharePoint Online cible afin de lire et d’écrire les éléments d’une bibliothèque SharePoint.
Dans l’extrait de code suivant, extrait d’une application console .NET 6, vous pouvez voir comment accéder au locataire SharePoint Online cible à l’aide de la bibliothèque PnP Framework, disponible en tant que package NuGet open source.
// Use the PnP Framework AuthenticationManager class to get access to SharePoint Online
var am = new AuthenticationManager();
using (var context = am.GetACSAppOnlyContext(settings.SiteUrl, settings.ClientId, settings.ClientSecret))
{
// Read the target library title
var targetLibrary = context.Web.Lists.GetByTitle(settings.ListTitle);
context.Load(targetLibrary, l => l.Title);
await context.ExecuteQueryAsync();
Console.WriteLine($"The title of the library is: \"{targetLibrary.Title}\"");
// Add a new document to the target library
using (var fileContent = new MemoryStream())
{
// Create some random text content
var randomContent = Encoding.UTF8.GetBytes($"Some random content {DateTime.Now}");
fileContent.Write(randomContent, 0, randomContent.Length);
fileContent.Position = 0;
// Upload the content as a random name file
await targetLibrary.RootFolder.UploadFileAsync($"{Guid.NewGuid().ToString("n")}.txt", fileContent, true);
}
}
L’extrait de code lit le titre d’une bibliothèque cible, puis charge un nouveau fichier texte dans la bibliothèque cible, juste pour afficher une logique personnalisée hypothétique qui consomme SharePoint Online via l’application uniquement.
Remarque
L’exemple de code s’appuie sur la bibliothèque d’infrastructure PnP pour faciliter l’accès à SharePoint Online. Toutefois, vous pouvez utiliser le modèle objet côté client (CSOM) SharePoint Online uniquement. L’objectif de la bibliothèque de framework PnP est simplement d’accélérer votre processus de développement et d’améliorer la qualité de vie des développeurs.
Inscription de la nouvelle application dans Azure AD
Étant donné que vous disposez d’une application inscrite ACS, voyons comment la transformer en une application Azure AD moderne.
Tout d’abord, vous devez inscrire l’application dans Azure AD. Vous devez ensuite configurer l’authentification pour l’application. Enfin, vous devez configurer les autorisations que vous souhaitez accorder à l’application pour accéder à SharePoint Online.
Pour des raisons de sécurité, pour accéder à SharePoint Online en mode application uniquement via une application inscrite azure AD, vous devez également créer et configurer un certificat X.509 pour l’authentification de l’application.
Dans les sections suivantes, vous voyez comment procéder à l’inscription de l’application Azure AD, à l’aide d’une approche automatique ou manuelle.
Inscription automatique d’une nouvelle application dans Azure AD avec PnP PowerShell
Le moyen le plus rapide et le plus simple d’inscrire une application Azure AD pour accéder à SharePoint Online en mode application seule consiste à s’appuyer sur PnP PowerShell.
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.
En fait, il existe l’applet de commande Register-PnPAzureADApp , qui permet d’exécuter toutes les étapes d’inscription avec une seule ligne de code. Dans l’extrait de code suivant, vous pouvez voir un script PowerShell pour ce faire.
$app = Register-PnPAzureADApp -ApplicationName "Here the name of your application" -Store CurrentUser -Tenant yourtenant.onmicrosoft.com -Username "your-username" -Password (Read-Host -AsSecureString -Prompt "Enter Password") -CertificatePassword (Read-Host -AsSecureString -Prompt "Enter Certificate Password") -OutPath .\
$app.'AzureAppId/ClientId'
$app.'Certificate Thumbprint'
L’applet de commande exécute les étapes suivantes :
- inscrit l’application dans Azure AD
- crée un certificat X.509 pour l’authentification de l’application
- importe le certificat, avec sa clé privée, dans le magasin de certificats Utilisateur actuel
- exporte le . PFX et . Fichiers CER du certificat dans le dossier spécifié par l’argument OutPath
- charge la clé publique du certificat dans Azure AD pour configurer le certificat pour l’authentification de l’application
- configure un ensemble prédéfini d’autorisations pour l’application dans Azure AD
Le script ci-dessus génère l’ID client de l’application et l’empreinte numérique du certificat généré automatiquement.
Pendant tout le processus, une boîte de dialogue d’invite s’affiche pour accorder les autorisations à l’application. Dans la capture d’écran suivante, vous pouvez voir les autorisations accordées automatiquement à l’application par l’applet de commande .
Il existe de nombreuses options pour configurer le comportement de l’applet de commande Register-PnPAzureADApp . Par exemple, vous pouvez personnaliser les autorisations à accorder à l’application à l’aide des arguments GraphApplicationPermissions et SharePointApplicationPermissions .
Si le processus manuel ne vous intéresse pas, vous pouvez accéder à la section « Consommation de SharePoint Online en mode application uniquement via une application inscrite Azure AD » pour voir comment utiliser SharePoint Online avec votre application Azure AD nouvellement inscrite.
Inscription manuelle d’une nouvelle application dans Azure AD
L’applet de commande PowerShell PnP pour inscrire automatiquement l’application Azure AD est puissante. Toutefois, il existe des scénarios dans lesquels vous souhaitez davantage de contrôle sur le processus. Dans ces scénarios, vous pouvez inscrire manuellement une nouvelle application dans Azure AD. Pour obtenir le même résultat illustré précédemment, vous devez ouvrir un navigateur et accéder à https://aad.portal.azure.com/. Sélectionnez Azure Active Directory dans l’onglet de gauche pour activer le panneau Azure AD, puis choisissez inscriptions d'applications dans la liste des sections disponibles dans le menu de gauche du panneau Azure AD. Dans la capture d’écran ci-dessous, vous pouvez voir l’interface utilisateur du panneau Azure AD dans ce scénario.
Sélectionnez le bouton Nouvelle inscription pour démarrer le processus d’inscription manuelle de l’application. Dans la capture d’écran suivante, vous pouvez voir le formulaire pour inscrire une nouvelle application.
Vous devez fournir un nom pour votre nouvelle application. Vous devez ensuite choisir les comptes que vous souhaitez prendre en charge. Les options disponibles sont les suivantes :
- Comptes dans cet annuaire organisationnel uniquement : l’application cible un seul locataire (c’est-à-dire un seul locataire).
- Comptes dans n’importe quel annuaire organisationnel : l’application cible n’importe quel locataire (c’est-à-dire multilocataire).
- Comptes dans n’importe quel annuaire organisationnel et comptes Microsoft personnels : l’application est multilocataire et prend en charge tout compte Microsoft personnel (comme Skype, Xbox, etc.).
- Comptes Microsoft personnels uniquement : l’application prend en charge tout compte Microsoft personnel (comme Skype, Xbox, etc.).
Pour le scénario actuel, vous pouvez choisir l’option monolocataire ou multilocataire. Passons à un seul locataire.
Sélectionnez le bouton Inscrire et inscrivez l’application réelle. Vous êtes maintenant invité à entrer une page contenant un ensemble d’informations utiles sur l’application inscrite. Vous pouvez voir la page dans la capture d’écran suivante.
Configuration d’un certificat X.509 pour l’application
Vous pouvez créer manuellement un certificat X.509 pour votre application, à l’aide de n’importe quel outil de votre choix. Toutefois, le moyen le plus simple et le plus rapide de créer un certificat X.509 pour l’authentification Azure AD consiste à s’appuyer une fois de plus sur PnP PowerShell et plus particulièrement sur l’applet de commande New-PnPAzureCertificate . Voici un exemple de syntaxe PowerShell pour créer un certificat X.509.
$cert = New-PnPAzureCertificate -CommonName "my-certificate-common-name" -OutPfx .\my-certificate.pfx -OutCert .\my-certificate.cer -ValidYears 2 -CertificatePassword (Read-Host -AsSecureString -Prompt "Enter Certificate Password")
$cert.Thumbprint
Le script ci-dessus crée un certificat X.509 et stocke son . PFX et . Fichiers CER dans les chemins d’accès de fichier spécifiés. Ensuite, il génère l’empreinte numérique du certificat généré.
Remarque
Si vous souhaitez utiliser le certificat généré à partir de votre ordinateur de développement local, vous devez importer le généré. Fichier PFX (qui inclut la clé privée) dans votre magasin de certificats local. La procédure peut varier en fonction du système d’exploitation de votre ordinateur de développement. Si vous avez utilisé le processus automatique, le certificat est automatiquement importé dans votre magasin de certificats Utilisateur actuel.
Vous êtes maintenant prêt à charger le certificat dans Azure AD. Retour à la page web Azure AD affichant les informations de l’application et sélectionnez le menu Certificats & secrets sur le côté gauche de la page de l’application. Sélectionnez l’onglet Certificats dans la page, sélectionnez Charger le certificat et chargez le . Fichier CER à partir de là. Dans la capture d’écran suivante, vous pouvez voir à quoi ressemble l’interface utilisateur du portail Azure AD lors du chargement d’un certificat X.509.
Octroi d’autorisations à l’application
Vous êtes maintenant prêt à accorder des autorisations à l’application. Vous devez simplement sélectionner dans le menu Autorisations de l’API sur le côté gauche de l’écran et sélectionner sur la commande Ajouter une autorisation . Dans la capture d’écran ci-dessous, vous pouvez voir à quoi ressemble l’interface utilisateur.
Vous serez invité par un Assistant à plusieurs étapes par le biais duquel vous pouvez choisir les autorisations à ajouter. Pour accéder à SharePoint Online, vous pouvez choisir Microsoft Graph ou SharePoint comme API cible. Étant donné que dans cet article, nous parlons de la configuration d’une application pour l’accès d’application uniquement à SharePoint, vous devez choisir d’ajouter des autorisations de type Autorisations d’application. Enfin, vous devez sélectionner les autorisations que vous souhaitez ajouter.
Au moment de la rédaction de cet article, les autorisations d’application disponibles pour le scénario actuel sont illustrées dans la liste suivante :
- Microsoft Graph
- Autorisations d’application :
- Sites.FullControl.All : avoir le contrôle total de toutes les collections de sites
- Sites.Manage.All : créer, modifier et supprimer des éléments et des listes dans toutes les collections de sites
- Sites.Read.All : lire des éléments dans toutes les collections de sites
- Sites.ReadWrite.All : lire et écrire des éléments dans toutes les collections de sites
- Sites.Select : accéder aux collections de sites sélectionnées (il est abordé dans l’article « Présentation du consentement spécifique aux ressources pour Microsoft Graph et SharePoint Online »)
- Autorisations d’application :
- SharePoint
- Autorisations d’application :
- Sites.FullControl.All : avoir le contrôle total de toutes les collections de sites
- Sites.Manage.All : lire et écrire des éléments et des listes dans toutes les collections de sites
- Sites.Read.All : lire des éléments dans toutes les collections de sites
- Sites.ReadWrite.All : lire et écrire des éléments dans toutes les collections de sites
- Sites.Selected : accéder aux collections de sites sélectionnées (il est abordé dans l’article « Présentation du consentement spécifique aux ressources pour Microsoft Graph et SharePoint Online »)
- TermStore.Read.All : métadonnées gérées en lecture
- TermStore.ReadWrite.All : lire et écrire des métadonnées managées
- User.Read.All : Lire les profils utilisateur
- User.ReadWrite.All : lire et écrire des profils utilisateur
- Autorisations d’application :
Comme vous pouvez le voir, vous pouvez choisir de nombreuses options et, en fonction de votre objectif, vous pouvez utiliser Microsoft Graph, qui devrait toujours être le choix principal, ou les API REST SharePoint Online comme alternative. Vous pouvez même utiliser les deux dans la même application, en fonction de ce que vous devez réellement faire.
Juste pour créer un exemple, nous allons ajouter les autorisations suivantes :
- Microsoft Graph
- Autorisations d’application :
- Sites.ReadWrite.All
- Autorisations d’application :
- SharePoint
- Autorisations d’application :
- Sites.ReadWrite.All
- Autorisations d’application :
Une fois que vous avez ajouté des autorisations à une application dans Azure AD, vous devrez peut-être accorder explicitement ces autorisations. Dans la liste des autorisations, vous pouvez voir une colonne avec le nom État et si la valeur est « Non accordé pour [nom de votre locataire] » avec un point d’exclamation orange, vous devez sélectionner sur le bouton Accorder le consentement administrateur pour [nom de votre locataire] afin d’accorder le consentement pour ces autorisations, comme illustré dans la capture d’écran suivante.
En accordant le consentement, la valeur de la colonne État des autorisations devient « Accordé pour [nom de votre locataire] » et une marque case activée verte s’affiche.
Utilisation de SharePoint Online en mode application uniquement via une application inscrite Azure AD
Vous êtes maintenant prêt à utiliser SharePoint Online via votre application Azure AD nouvellement inscrite.
Remarque
Si vous souhaitez l’utiliser localement, à partir de votre ordinateur de développement, vous devez installer le certificat généré dans votre magasin de certificats. Si vous avez utilisé l’inscription automatique via PnP PowerShell, le certificat est déjà inscrit. Si vous avez utilisé le processus manuel, vous devrez importer manuellement le certificat dans votre magasin de certificats Utilisateur actuel.
Dans l’extrait de code suivant, extrait d’une application console .NET 6, vous pouvez voir comment accéder au locataire SharePoint Online cible à l’aide de la bibliothèque PnP Framework.
// Use the PnP Framework AuthenticationManager class to get access to SharePoint Online
var certificate = X509CertificateUtility.LoadCertificate(StoreName.My, StoreLocation.CurrentUser, settings.CertificateThumbprint);
var am = AuthenticationManager.CreateWithCertificate(settings.ClientId, certificate, settings.TenantId);
using (var context = am.GetContext(settings.SiteUrl))
{
// Read the target library title
var targetLibrary = context.Web.Lists.GetByTitle(settings.ListTitle);
context.Load(targetLibrary, l => l.Title);
await context.ExecuteQueryAsync();
Console.WriteLine($"The title of the library is: \"{targetLibrary.Title}\"");
// Add a new document to the target library
using (var fileContent = new MemoryStream())
{
// Create some random text content
var randomContent = Encoding.UTF8.GetBytes($"Some random content {DateTime.Now}");
fileContent.Write(randomContent, 0, randomContent.Length);
fileContent.Position = 0;
// Upload the content as a random name file
await targetLibrary.RootFolder.UploadFileAsync($"{Guid.NewGuid().ToString("n")}.txt", fileContent, true);
}
}
Comme dans l’exemple précédent, l’extrait de code lit le titre d’une bibliothèque cible, puis charge un nouveau fichier texte dans la bibliothèque cible. Comme vous pouvez le voir, le code ressemble presque à l’ancien exemple. Toutefois, dans ce dernier exemple, vous utilisez une application inscrite azure AD et vous faites référence à un certificat X.509 pour l’authentification. En plus de cela, vous utilisez toujours la bibliothèque d’infrastructure PnP et la syntaxe CSOM pour accéder à SharePoint Online. Grâce à cette nouvelle approche, vous disposez désormais d’un niveau de personnalisation plus élevé pour vos autorisations d’application et vous n’utilisez plus ACS.
Contenu recommandé
Vous trouverez des informations supplémentaires sur cette rubrique en lisant les documents suivants :