Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

The Mit's Blog

En plus d'intégrer et skier, il sait même écrire !
(Blog de Renaud Comte)

Actualités

CSOM : Client Object Model ou comment travailler à distance sur votre ferme (même en ADFS) ?

Un sujet un peu riche mais je fait ce post en l’honneur d’un de mes collègues Laurent qui vient de vivre cette histoire. Donc je me permet de la partager, ne sait on jamais.

Contexte : comment intervenir sur un site SharePoint en maintenance sans accès directe à la ferme ?

Il y a bien des situations ou vous devez intervenir pour assister ou corriger un site SharePoint :

  • soucis de sécurité
  • nommage de fichier, de bibliothèques
  • correction de groupe de sécurité
  • création de site dynamique
  • changement de charte graphique
  • ajout de contenu

Seulement, bien souvent, les fermes de production sont “protégées” des vilains doigts de développeur artistes. A tort ou à raison ? Ce n’est pas la question, la production n’est pas à manipuler de manière inconsidérée, il faut mieux prévenir.

Certes vous pouvez intervenir avec un compte “admin” et faire vos opérations de maintenance … à la souris mais modifiez une centaine de site ou 240 groupes de sécurité voir renommez 512 fichiers n’est pas une sinécure. Ca peut prendre (beaucoup) de temps, d’énergie et de patience

Il serait bon de pouvoir automatiser un peu au risque de dépression rapide de votre morale voir seppuku …

Les possibilités

Powershell vient souvent en tête et avec raison. Fabrice Romelard nous partage depuis longtemps bien des scripts de maintenance SP, pourquoi s’en priver

image

Soucis : il faut pouvoir accéder à un des serveurs de la ferme SharePoint, et c’est rarement le cas pour un développeur

Certes, vous pouvez passer par une ferme de qualification et une fois le GO et un minimum de documentation, un IT autorisé peut l’exécuter
>>> C’est un TRES BON processus !!! Je ne saurais trop insister sur l’importance d’un minimum de contrôle, de documentation et de validation

Cependant, des fois, il faut être rapide et pragmatique. Si vous avez un compte “admin” SharePoint , vous en avez déjà les droits et les responsabilités non ? Mais pas forcement les droits sur les machines …

Vous pouvez certes profiter du remoting Powershell et exécuter à distance vos batchs depuis votre poste sur la ferme mais rare sont les administrateurs IT téméraires qui l’autorisent. Ces liens sauront vous aidez à le configurer si jamais

L’alternative

Des fois, la solution est tellement évidente qu’on ne le voit pas ou qu’on y pense pas. CLOM bien sur Sourire

image

Avant Powershell, on codait rapidement de petites applications en ligne de commande mais le script est largement plus intéressant et flexible. Mais ca ne rend pas C# et VS pour autant obsolète et pour accéder à SP en distant il y a : 

Le Client Objet Model de SharePoint pour .Net, aka Microsoft.SharePoint.Client

MSDN : SharePoint 2010 Client Object Model

Exemple basique : Creating a Basic SharePoint Foundation Client Application

Cette nouveauté de SP2010 vous permet de travailler directement avec SharePoint depuis votre application cliente sans devoir vous exécuter sur le serveur. Et la vous pouvez bénéficier de toute l’assistance de VS 2010 & Linq sans pour autant devoir utiliser la couche des Web Services et leur épaisse documentation

Soit dans notre cas, coder une petite application ligne de commande ou winform pour “intervenir” sur votre site SharePoint 

Ce qui marche très bien pour des services back office ou des clients riches, marche tout aussi pour de simple petites applications, merci .Net

CLOM de SharePoint est vraiment riche, du moins pour toute la partie admin/gestion de collection et de site SharePoint, pourquoi ne pas en profiter. Vous avez quasiment les mêmes objets qu’en OM local à la différence de la notion de contexte mais vraiment rien de compliqué

Et fini les soucis de maintenance à distance sans accès à la machine !

Sauf qu’il peut y avoir quelques problèmes mais jamais insurmontables, voyons

  • Je n’ai pas accès à un poste SharePoint de développement, et donc pas la dll cliente … Triste

Sourire Il vous faut simplement télécharger la bibliothèque SPF 2010 client object model redistributable  : http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=b4579045-b183-4ed4-bf61-dc2f0deabe47

  • Je n’ai pas de poste avec Visual Studio Triste

Sourire Il reste encore PowerShell qui lui peut instancier le CLOM voir les WS, donc un coup de notepad ++ ou PowerGui et votre script est opérationnel
http://www.spjeff.com/2012/02/26/powershell-upload-csv-file-to-list-both-server-and-client-om/

$clientContext = [Microsoft.SharePoint.Client.ClientContext,Microsoft.SharePoint.Client, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c] $context = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl)

certaines opérations peuvent demande du C# inline cependant … : http://blogs.technet.com/b/heyscriptingguy/archive/2011

  • Certainement le cas le plus rude : Mon site ne tourne pas sous contexte NT mais en ADFS … comment m’identifiez Triste ?

 Sourire tout est prévu !!! Merci Office 365 de nous fournir une documentation si riche d’ailleurs (eh oui O365 utilise ADFS donc les samples sont aussi bons pour votre réseau)

Soit le ClaimClientContext.GetAuthenticatedContext qui simplement vous promptera pour vous identifier avant de continuer

string targetSite = "https://sharepointOnlineURLRoot/sites/siteName";
using (ClientContext ctx = ClaimClientContext.GetAuthenticatedContext(targetSite))
{
   if (ctx != null)
  {
     ctx.Load(ctx.Web); // Query for Web
     ctx.ExecuteQuery(); // Execute
     Console.WriteLine(ctx.Web.Title);
   }  
}

Ci joins, le sample officiel de la galerie de Code MSDN : http://code.msdn.microsoft.com/Remote-Authentication-in-b7b6f43c

Conclusion

Il y a toujours une solution et elle ne passe pas forcement par du code sur le serveur SharePoint ! Et vive la richesse des clients SharePoint d’ailleurs

Bonne SPjournée à tous et spécialement à Laurent et Arnaud Clignement d'œil

Renaud Comte aka TheMit (SPCLOM, ca c’est de l’acronyme non ?)
Member of WygTeam
http://www.wygwam.com

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: vendredi 30 mars 2012 17:06 par themit

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- SharePoint : Bug sur la gestion des permissions et la synchronisation Office par Blog Technique de Romelard Fabrice le 07-10-2014, 11:35

- SharePoint 2007 : La gestion des permissions pour les Workflows par Blog Technique de Romelard Fabrice le 07-08-2014, 11:27

- TypeMock: mock everything! par Fathi Bellahcene le 07-07-2014, 17:06

- Coding is like Read par Aurélien GALTIER le 07-01-2014, 15:30

- Mes vidéos autour des nouveautés VS 2013 par Fathi Bellahcene le 06-30-2014, 20:52

- Recherche un passionné .NET par Tkfé le 06-16-2014, 12:22

- [CodePlex] Projet KISS Workflow Foundation lancé par Blog de Jérémy Jeanson le 06-08-2014, 22:25

- Etes-vous yOS compatible ? (3/3) : la feuille de route par Le blog de Patrick [MVP SharePoint] le 06-06-2014, 00:30

- [MSDN] Utiliser l'approche Contract First avec Workflow Foundation 4.5 par Blog de Jérémy Jeanson le 06-05-2014, 21:19

- [ #ESPC14 ] TH10 Moving mountains with SharePoint ! par Le blog de Patrick [MVP SharePoint] le 06-01-2014, 11:30