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

- [ #Yammer ] From Mailbox to Yammer and back / De votre messagerie vers Yammer et retour ! par Le blog de Patrick [MVP SharePoint] le 09-15-2014, 11:31

- [ #Office 365 ] New service settings panel / Nouveau panneau de paramétrage des services par Le blog de Patrick [MVP SharePoint] le 09-11-2014, 08:50

- Problème de déploiement pour une démo SharePoint/TFS? par Blog de Jérémy Jeanson le 09-10-2014, 21:52

- [ #Office365 ] Delve first impressions / Premières impressions sur Delve par Le blog de Patrick [MVP SharePoint] le 09-09-2014, 16:57

- [ #Office365 ] How to change Administration console language ? / Comment changer la langue de la console d’administration ? par Le blog de Patrick [MVP SharePoint] le 09-09-2014, 08:25

- [ #SharePoint 2013 ] Suppression de bases de données en état “Pas de Réponse” par Le blog de Patrick [MVP SharePoint] le 09-04-2014, 14:10

- Changer l’adresse d’une ferme Office Web Apps associée à SharePoint par Blog de Jérémy Jeanson le 09-01-2014, 22:21

- Une ferme #SharePoint 2013 dans @Azure en quelques clics (1ère partie) ! par Le blog de Patrick [MVP SharePoint] le 08-28-2014, 18:52

- SharePoint 2013: Préparation de la migration - Création des site Templates dans 2010 et 2013 par Blog Technique de Romelard Fabrice le 08-20-2014, 16:31

- [ #Yammer ] How to change interface language ? Comment changer la langue de l’interface ? par Le blog de Patrick [MVP SharePoint] le 08-20-2014, 14:21