Partager via


Modifier les autorisations de site SharePoint et obtenir des status de partage externe

Vous pouvez utiliser l’exemple Core.SitePermissions pour modifier les administrateurs de collection de sites sur n’importe quelle collection de sites, y compris ceux de OneDrive Entreprise sur Office 365 locataires. Cet exemple montre également comment obtenir des status de partage externe pour Office 365 installations multilocataires.

À l’aide d’une application console, vous créez un objet ClientContext pour obtenir les autorisations nécessaires pour répertorier et/ou modifier les administrateurs, et obtenir des status de partage externe. Vous créez également un complément inscrit à l’aide de jetons OAuth.

Avant de commencer

Pour commencer, téléchargez l’exemple de complément Core.SitePermissions à partir du projet Office 365 Developer Patterns and Practices sur GitHub.

Remarque

Le code dans cet article est fourni tel quel, sans garantie d’aucune sorte, expresse ou implicite, y compris mais sans s’y limiter, aucune garantie implicite d’adéquation à un usage particulier, à une qualité marchande ou une absence de contrefaçon.

Travailler avec les administrateurs de collection de sites

Pour mettre à jour les administrateurs d’une collection de sites, vous devez être administrateur de la collection de sites. La première étape consiste à créer un objet ClientContext par un utilisateur disposant des autorisations appropriées.

ClientContext cc = new AuthenticationManager().GetSharePointOnlineAuthenticatedContextTenant(String.Format("https://{0}.sharepoint.com/sites/{1}", tenantName, siteName), String.Format("{0}@{1}.onmicrosoft.com", userName, tenantName), password); 

À l’aide de l’objet ClientContext , vous pouvez obtenir la liste des administrateurs de collection de sites actuels ou mettre à jour les administrateurs de collection de sites, comme illustré dans l’exemple suivant.

List<UserEntity> admins = cc.Web.GetAdministrators();

List<UserEntity> adminsToAdd = new List<UserEntity>();
adminsToAdd.Add(new UserEntity() { LoginName = "i:0#.f|membership|user@domain" });

cc.Web.AddAdministrators(adminsToAdd);

UserEntity adminToRemove = new UserEntity() { LoginName = "i:0#.f|membership|user@domain" };
cc.Web.RemoveAdministrator(adminToRemove);

Vous pouvez définir les administrateurs de collection de sites pour les collections de sites où vous n’êtes pas déjà administrateur de collection de sites en créant un objet ClientContext à l’aide d’un complément inscrit. Ici, l’objet ClientContext est basé sur un jeton OAuth avec des autorisations au niveau du locataire.

// Use (Get-MsolCompanyInformation).ObjectID to obtain Target/Tenant realm: <guid>
//
// Manually register an add-in via the appregnew.aspx page and generate an add-in ID and 
// add-in secret. The add-in title and add-in domain can be a simple string like "MyAddin".
//
// Update the add-in ID in your worker role settings.
//
// Add the add-in secret in your worker role settings. 
//
// Manually set the permission XML for your add-in via the appinv.aspx page:
// 1. Look up your add-in via its add-in ID.
// 2. Paste the permission XML and choose create.
//
// Sample permission XML:
// <AppPermissionRequests AllowAppOnlyPolicy="true">
//   <AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" />
// </AppPermissionRequests>
//
// Because you're granting tenant-wide full control to an add-in, the add-in secret is as important
// as the password from your SharePoint administration account.

Après cela, vous pouvez utiliser le code suivant pour obtenir un objet ClientContext pour ce complément.

ClientContext cc = new AuthenticationManager().GetAppOnlyAuthenticatedContext("https://tenantname-my.sharepoint.com/personal/user2", "<your tenant realm>", "<appID>", "<appsecret>");

Utiliser le partage externe (Office 365 MT uniquement)

Ce scénario montre comment obtenir le partage externe status d’une collection de sites et obtenir une liste d’utilisateurs externes pour une collection de sites spécifique ou pour l’ensemble du locataire. Étant donné que cela nécessite les bibliothèques CSOM clientes, vous devez créer un ClientContext sur la collection de sites d’administration du locataire. Le compte d’utilisateur doit être un compte d’administrateur de locataire.

ClientContext ccTenant = new AuthenticationManager().GetSharePointOnlineAuthenticatedContextTenant(String.Format("https://{0}-admin.sharepoint.com/", tenantName), String.Format("{0}@{1}.onmicrosoft.com", userName, tenantName), password);

Une fois le ClientContext prêt, vous pouvez utiliser le code suivant pour obtenir les status de partage externe et une liste d’utilisateurs externes.

ccTenant.Web.GetSharingCapabilitiesTenant(new Uri(String.Format("https://{0}.sharepoint.com/sites/{1}", tenantName, siteName)))

List<ExternalUserEntity> externalUsers = ccTenant.Web.GetExternalUsersForSiteTenant(new Uri(String.Format("https://{0}.sharepoint.com/sites/{1}", tenantName, siteName)));

List<ExternalUserEntity> externalUsers = ccTenant.Web.GetExternalUsersTenant();

Voir aussi