Configurer un exemple d’application multigéographique

Lors du développement pour un locataire multigéographique, il est important de comprendre le modèle de sécurité. Heureusement, le modèle utilisé pour un locataire multigéographique est le même que le modèle utilisé pour un locataire normal.

Cet article explique comment configurer les exemples d’applications suivants :

Lire et mettre à jour les profils pour tous les utilisateurs utilisant le API Graph

Comme expliqué dans l’article Utiliser des profils utilisateur dans un locataire multigéographique, le modèle préféré à utiliser pour lire et mettre à jour les propriétés de profil utilisateur est le API Graph. Cette section explique les autorisations que vous devez accorder à votre application pour réaliser des lectures et des mises à jour de profil utilisateur à l’échelle du locataire.

Il existe une longue liste d’autorisations possibles que vous pouvez accorder à une application définie dans Azure AD, mais pour manipuler des profils, vous pouvez limiter les autorisations à ce qui suit.

Autorisation Type Description Administration consentement nécessaire
User.ReadWrite.All Autorisation d’application Permet à l’application de lire et d’écrire l’ensemble complet des propriétés de profil, de l’appartenance aux groupes, des rapports et des responsables d’autres utilisateurs de votre organization, sans utilisateur connecté.

Permet également à l’application de créer et de supprimer des utilisateurs non administratifs.

N’autorise pas la réinitialisation des mots de passe utilisateur.
Oui
Sites.ReadWrite.All Autorisation d’application Permet à l’application de lire/écrire des documents et des éléments de liste dans toutes les collections de sites sans utilisateur connecté.

Cette autorisation n’est nécessaire que si l’application récupère l’emplacement du site personnel de l’utilisateur (par exemple, https://graph.microsoft.com/v1.0/users/UserB@contoso.onmicrosoft.com?$select=mySite).
Oui

Les exemples multigéographiques basés sur Microsoft Graph utilisent la bibliothèque d’authentification Microsoft (MSAL) pour se connecter à Microsoft Graph sur le point de terminaison v2. Par rapport à ADAL, qui se connecte à l’aide du point de terminaison v1, MSAL autorise la connexion à Microsoft Graph à l’aide de comptes Microsoft, d’Azure AD et d’Azure AD B2C. Les instructions suivantes vous aideront à configurer votre application pour le point de terminaison v2, mais vous pouvez également utiliser l’approche « plus ancienne » basée sur les points de terminaison v1.

Inscription de votre application

  1. Pour utiliser les autorisations d’application sur Microsoft Graph, inscrivez votre application à l’adresse https://apps.dev.microsoft.com.

  2. Une fois connecté, choisissez Ajouter une application, puis Ajouter une nouvelle application convergée.

  3. Donnez un nom à votre application, puis choisissez Créer une application.

  4. L’écran de configuration de l’application s’affiche.

Inscrire l’application dans Azure AD

  1. Générez un nouveau mot de passe et notez-le avec l’ID d’application.

  2. Choisissez Ajouter une plateforme, puis application native comme cible de plateforme, car l’application n’a pas de page d’accueil.

Configurer l’application dans Azure AD partie 1

  1. Ajoutez les autorisations d’application nécessaires. Dans cet exemple d’application, nous avons ajouté les autorisations d’application Sites.ReadWrite.All et User.ReadWrite.All.

  2. Désactivez la case case activée prise en charge Kit de développement logiciel (SDK) Live.

Configurer l’application dans Azure AD partie 2

  1. Enregistrez vos modifications.
  1. Dans cet exemple, les autorisations d’application User.ReadWrite.All et Sites.ReadWrite.All nécessitent le consentement de l’administrateur dans un locataire avant de pouvoir être utilisées. Créez une URL de consentement comme suit :
https://login.microsoftonline.com/<tenant>/adminconsent?client_id=<clientid>&state=<something>
  1. Utilisez l’ID client de l’application inscrite et donnez votre consentement à l’application à partir de mon locataire contoso.onmicrosoft.com ; L’URL ressemble à ceci :
https://login.microsoftonline.com/contoso.onmicrosoft.com/adminconsent?client_id=6e4433ca-7011-4a11-85b6-1195b0114fea&state=12345
  1. Accédez à l’URL créée et connectez-vous en tant qu’administrateur client, puis donnez votre consentement à l’application. Vous pouvez voir que l’écran de consentement affiche le nom de votre application ainsi que les étendues d’autorisation que vous avez configurées.

Consentement du locataire pour l’application Azure AD

Lire et mettre à jour des profils pour tous les utilisateurs à l’aide de l’API de profil utilisateur CSOM

Lorsque vous utilisez l’API CSOM pour manipuler les propriétés de profil, vous le faites uniquement pour les propriétés personnalisées créées, car les propriétés prêtes à l’emploi sont mieux gérées via microsoft API Graph. Pour plus d’informations, consultez l’article Utiliser des profils utilisateur dans un locataire multigéographique.

Du point de vue des autorisations, il existe deux modes :

  • Utilisation des informations d’identification de l’utilisateur

    Cela nécessite la configuration d’un ClientContext objet à l’aide de l’URL d’administrateur du locataire et des informations d’identification de l’administrateur SharePoint Online. Étant donné qu’il n’y a qu’un seul instance Azure AD contenant des utilisateurs, cela signifie qu’un administrateur SharePoint Online est l’administrateur de tous les emplacements géographiques.

    string tenantAdminSiteForMyGeoLocation = "https://contoso-europe-admin.sharepoint.com";
    
    using (ClientContext cc = new ClientContext(tenantAdminSiteForMyGeoLocation))
    {
        SecureString securePassword = GetSecurePassword("password");
        cc.Credentials = new SharePointOnlineCredentials("admin@contoso.onmicrosoft.com", securePassword);
    
        // user profile logic
    }
    
    static SecureString GetSecurePassword(string Password)
    {
        SecureString sPassword = new SecureString();
        foreach (char c in Password.ToCharArray()) sPassword.AppendChar(c);
        return sPassword;
    }
    
  • Utilisation d’un principal d’application uniquement

    Lorsque vous utilisez l’application uniquement, vous devez accorder au principal d’application créé le contrôle total de l’étendue d’autorisation http://sharepoint/social/tenant .

Les instructions suivantes vous montrent comment utiliser appregnew.aspx et appinv.aspx pour inscrire un principal d’application et y donner son consentement.

Créer le principal

  1. 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).

  2. Dans cette page, choisissez le bouton Générer pour générer un ID client et une clé secrète client.

  3. Renseignez les champs restants comme suit :

  • Titre : Multi-Geo demo
  • Domaine d’application : www.localhost.com
  • URI de redirection : https://www.localhost.com

Inscrire le principal de l’application ACS

Remarque

Stockez les informations récupérées (ID client et clé secrète client), car vous en aurez besoin à l’étape suivante.

Importante

L’utilisation d’Azure ACS (Access Control Services) pour SharePoint Online a été mise hors service depuis le 27 novembre 2023, consultez l’annonce de mise hors service complète pour en savoir plus. L’utilisation d’Azure ACS en dehors du contexte de SharePoint a déjà été mise hors service le 7 novembre 2018 et est maintenant en fin de vie.

La mise hors service signifie que la fonctionnalité ne recevra aucun nouvel investissement, mais qu’elle est toujours prise en charge. La fin de vie signifie que la fonctionnalité sera abandonnée et qu’elle n’est plus disponible.

Accorder des autorisations au principal créé

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.

  1. Vous pouvez accéder à ce site via https://contoso-admin.sharepoint.com/_layouts/15/appinv.aspx.

  2. Une fois la page chargée, ajoutez votre ID client, puis recherchez le principal créé.

Accorder des autorisations au principal de l’application

  1. Pour accorder des autorisations, vous devez fournir le code XML d’autorisation qui décrit les autorisations nécessaires. Étant donné que l’analyseur d’expérience d’interface utilisateur doit pouvoir accéder à tous les sites et utilise la recherche avec l’application uniquement, il nécessite les autorisations suivantes :
<AppPermissionRequests AllowAppOnlyPolicy="true">
  <AppPermissionRequest Scope="http://sharepoint/social/tenant" Right="FullControl" />
</AppPermissionRequests>
  1. Lorsque vous choisissez Créer, une boîte de dialogue de consentement d’autorisation s’affiche. Choisissez Approuver pour accorder les autorisations.

Donner son consentement au principal de l’application

Utiliser le principal dans votre code

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

string tenantAdminSiteForMyGeoLocation = "https://contoso-europe-admin.sharepoint.com";

//Get the realm for the URL.
string realm = TokenHelper.GetRealmFromTargetUrl(siteUri);

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

//Create a client context object based on the retrieved access token.
using (ClientContext cc = TokenHelper.GetClientContextWithAccessToken(tenantAdminSiteForMyGeoLocation, accessToken))
{
    // user profile logic
}

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 proper secret -->
    <add key="ClientId" value="[Your Client ID]" />
    <add key="ClientSecret" value="[Your Client Secret]" />
  </appSettings>
</configuration>

Remarque

Vous pouvez facilement insérer la TokenHelper.cs classe dans votre projet en ajoutant le package NuGet [AppForSharePointOnlineWebToolkit] (https://www.nuget.org/packages/AppForSharePointOnlineWebToolkit/) à votre solution.

Découvrir la configuration multigéographique

La seule API prise en charge que vous pouvez utiliser pour découvrir les emplacements géographiques dans un locataire multigéographique est la API Graph. Cette section explique les autorisations que vous devez accorder à votre application pour découvrir les informations multigéographiques.

Il existe une longue liste d’autorisations possibles que vous pouvez accorder à une application définie dans Azure AD, mais pour lire les informations de configuration des locataires multigéographiques, vous pouvez limiter les autorisations aux éléments suivants.

Autorisation Type Description Administration consentement nécessaire
Sites.ReadWrite.All Autorisation d’application Permet à l’application de lire/écrire des documents et des éléments de liste dans toutes les collections de sites sans utilisateur connecté. Oui

Utilisez les étapes de création d’application Azure AD comme décrit dans la section Profils de lecture/mise à jour pour tous les utilisateurs .

Créer et supprimer des collections de sites et définir les propriétés de la collection de sites client

Utilisation de l’API Microsoft Graph

L’article Sites multigéographiques fournit plus de détails sur la création de sites de groupe (également appelés sites d’équipe « modernes ») à l’aide de microsoft API Graph. Dans cette section, nous abordons uniquement les autorisations. Le tableau suivant répertorie les autorisations nécessaires.

Autorisation Type Description Administration consentement nécessaire
Group.ReadWrite.All Autorisation d’application Permet à l’application de créer des groupes, de lire et de mettre à jour les appartenances à des groupes et de supprimer des groupes.

Toutes ces opérations peuvent être effectuées par l’application sans utilisateur connecté.

Notez que certaines API de groupe ne prennent pas en charge les autorisations d’accès d’application uniquement.
Oui

Les exemples multigéographiques basés sur Microsoft Graph utilisent la bibliothèque d’authentification Microsoft (MSAL) pour se connecter à Microsoft Graph sur le point de terminaison v2. Par rapport à ADAL, qui se connecte à l’aide du point de terminaison v1, MSAL autorise la connexion à Microsoft Graph à l’aide de comptes Microsoft, d’Azure AD et d’Azure AD B2C.

Utilisez les étapes de création d’application Azure AD comme décrit dans la section Profils de lecture/mise à jour pour tous les utilisateurs .

Utilisation de l’API de locataire CSOM

L’utilisation de l’API de locataire CSOM est très similaire à l’aide CSOM décrite précédemment . en fait, les conseils pour l’utilisation des informations d’identification de l’utilisateur sont identiques. Pour l’utilisation d’un principal d’application uniquement, les instructions sont les mêmes, mais vous devez accorder des autorisations différentes (locataire et contrôle total).

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

Voir aussi