Nous avons vu dans un précédent message comment supprimer les accès depuis Office vers des listes SharePoint :
Tout ceci fonctionne parfaitement sauf dans un contexte particulier que je vais présenter.
Attention:
Il faut noter que ce cas a été constaté sur SharePoint 2007, mais qu’il persiste avec SharePoint 2013 (et très certainement avec 2010). Il est fort probable qu’il soit aussi présent dans SharePoint OnLine.
Définition du besoin des utilisateurs
Les utilisateurs souhaitent un cas assez simple :
- Permettre à des utilisateurs de contribuer à une liste de type TaskList sans pour autant laisser ces mêmes “Contributeurs” la synchronisation via Outlook
La solution pour répondre à ce besoin est bien sur d’utiliser la procédure présentée dans l’article précédent :
Mise en place de la réponse à ce besoin
On édite ainsi le niveau de permissions “Edit” dans SharePoint 2013 (qui est associé avec les Membres)
On désactive les cases (dans le groupe Site Permissions):
- Use Remote Interfaces
- Use Client Integration Features
On enregistre alors cette configuration et on ajoute l’utilisateur souhaité dans les membres de ce site, qui est de base associé au niveau de permissions “Edit”
Mon compte est donc ajouté dans les membres contributeurs de ce site, sans bénéficier de la synchronisation avec Office (et Outlook)
En se connectant sur le site avec mon compte membre, je vois dans la liste “Mytask” créée pour l’occasion, héritant des permissions du site, que les boutons Office sont désactivés
Jusqu’ici, tout se passe parfaitement comme le souhaitent les utilisateurs.
Cas du bug
Toujours sur ce même site, le responsable souhaite ajouter une librairie documentaire afin de mettre à la disposition des contributeurs la documentation d’utilisation de ce site et de la liste des taches.
Cette documentation ne doit être disponible qu’en lecture pour ces utilisateurs et il est donc évident que l’héritage des permissions ne peut pas être conservé pour ces membres.
Nous allons donc dans les paramètres de la librairie des documentations (créée pour l’occasion)
Puis, il faut éditer les permissions de cette liste
Et casser l’héritage des permissions du parent (donc du site)
On choisi le groupe membre et on clique sur “Edit User Permission”
On change les permission de ce groupe avec uniquement le droit “Read” sur cette liste et on valide par OK
Maintenant, si on retourne sur le site, et la liste des taches, avec le compte utilisateur apartenant au groupe des membres
On voit apparaitre les boutons de synchronisation avec Office, alors que cela ne devrait pas arriver !!!
Explication du Bug
Le cas s’explique par un comportement natif de SharePoint suite à cette action de cassure d’héritage des permissions dans un niveau du site.
En effet, si on retourne dans les permissions à la racine du site pour le groupe “Membre”, on voit de base qu’il est censé avoir uniquement le niveau de permission “Edit”
Mais dans le détails, un second niveau de permissions apparaît alors “Limited Access”
Ce niveau de permission n’est pas supprimable, même si on annule la cassure d’héritage, il reste présent, comme dans la capture ci dessous
En allant dans les détails des niveaux de permissions, on retrouve ce niveau “Limited Access”
Et le détail des permissions associées à ce niveau nous montre qu’il est autorisé pour la synchronisation avec Office
L’interface graphique ne permet pas de changer ces options !!!
On trouve d’ailleurs les détails des permissions associées à ce niveau site le site Microsoft :
Work Around pour annuler cette effet
Il faut savoir qu’il n’y a pas de patch pour ce cas qui a aussi été constaté dans un autre contexte (les sites Web Publics basés sur SharePoint):
Cela ne nous aide pas dans notre contexte, car nous sommes uniquement sous SharePoint Foundation. Il n’est pas possible de supprimer le niveau de permission “Limited Access” en utilisant le code PowerShell disponible ici :
$web = Get-SPWeb -Identity http://MySharePointWebApp/sites/PermissionMgt $PermissionLevel=$web.RoleDefinitions $PermissionLevel.Delete("Limited Access")
Le retour d’erreur de cette commande est le suivant :
- You cannot remove the Limited Access or Full Control permission levels
La solution est donc d’utiliser PowerShell pour modifier les permissions associées avec ce niveau et supprimer la synchronisation Office. Le code est le suivant :
function Change-Permission-Level([string]$SiteURL, [string]$PermissionName)
{
$web = Get-SPWeb -Identity $SiteURL
$PermissionLevels=$web.RoleDefinitions
foreach($MyPermission in $PermissionLevels)
{
Write-Host " -------------------------------"
Write-Host "Permission Name:", $MyPermission.Name
Write-Host " -> Permission Description:", $MyPermission.Description
Write-Host " -> Permission Hidden:", $MyPermission.Hidden
Write-Host " -> Permission BasePermissions:", $MyPermission.BasePermissions
Write-Host " -------------------------------"if($MyPermission.Name -eq $PermissionName)
{
$MyPermission.BasePermissions = "ViewFormPages, Open, BrowseUserInfo"
$MyPermission.Update()
Write-Host " -> Permission Changed remove Office Integration !!!"
}
Write-Host " -------------------------------"
}$web.dispose()
}Change-Permission-Level “http://MySharePointWebApp/sites/PermissionMgt” "Limited Access"
Une fois la commande exécutée, on peut retourner dans le site avec le compte membre et constater que les options Office ont disparu
Cette action semble changer les permissions du niveau “Limited Access” pour de bon et la synchronisation ne revient plus.
Conclusion
Ce bug a été constaté par des utilisateurs et expliquée avec le Support Microsoft, notamment Ovidiu Stefanescu que je remercie pour son aide.
Le Work Around est fonctionnel et il y a peu de chance qu’un patch soit développé pour palier à ce cas spécifique, il faut aussi savoir que ce script fonctionne aussi pour SharePoint 2007 (avec une petite adaptation pour le départ).
En vous souhaitant une bonne lecture.
Romelard Fabrice [MBA]
Commentaires
Enregistrer un commentaire