Au cœur de SharePointIntégration de l'annuaire SharePoint

Pav Cherny

Téléchargement du code disponible à l'adresse SharePoint2008_09.exe(2 775 Ko)

Sommaire

Service de gestion d'annuaire SharePoint
Service de gestion d'annuaire personnalisé
SharePoint et ILM
Conclusion

Microsoft Windows SharePoint Service (WS) 3.0 et Microsoft Office SharePoint Server (MOSS) 2007 incluent des fonctionnalités de synchronisation d'annuaire sous forme d'un service de gestion d'annuaire capable de configurer les objets de groupe et les contacts à extension messagerie pour les ressources SharePoint dans Active Directory. La configuration de ces types

d'objets destinataires pour les ressources SharePoint® permet aux utilisateurs de sélectionner des bibliothèques, des listes et des groupes SharePoint directement depuis le carnet d'adresses Microsoft® Outlook® lors de l'envoi de documents et d'autres informations.

Les objets destinataires SharePoint permettent également de contrôler les transferts de messages et les conversions de format dans une organisation Exchange Server. Vous pouvez entre autres empêcher des expéditeurs non authentifiés, tels que des expéditeurs de courrier indésirable, d'envoyer des messages aux bibliothèques SharePoint en définissant des restrictions de remise des messages dans Active Directory®.

Les fonctionnalités de gestion d'annuaire de SharePoint sont toutefois limitées et, au moment de la rédaction de cet article, considèrent Exchange Server 2003 comme le système de messagerie sous-jacent. Pour l'instant, si vous utilisez Exchange Server 2007 ou un système de messagerie tiers, vous devez étendre ou remplacer les fonctionnalités de gestion d'annuaire intégrées par une solution personnalisée pour atteindre le niveau d'interopérabilité voulu.

Dans cet article, j'examinerai brièvement les fonctionnalités de gestion d'annuaire de SharePoint puis proposerai une approche visant à surmonter les restrictions existantes. Le principe de départ est que le service de gestion d'annuaire intégré ne répond qu'aux exigences utilisateur les plus basiques. Les environnements composés de plusieurs systèmes de messagerie et plates-formes d'annuaire ont besoin d'une plus grande flexibilité et de davantage de fonctionnalités. En remplaçant le composant intégré par une solution personnalisée, vous pouvez synchroniser les informations de destinataire SharePoint avec toute solution d'annuaire disposant de fonctionnalités API ou d'importation.

Pour preuve, je vous montrerai comment synchroniser les informations de destinataire SharePoint d'une façon compatible avec Exchange Server 2007. De même, vous pouvez utiliser une solution personnalisée pour synchroniser les informations de destinataire avec IBM Lotus Notes ou d'autres systèmes.

Vous pouvez également centraliser les processus de configuration d'annuaire sur la base d'un service de méta-annuaire, tel qu'Identity Information Server, inclus à Microsoft Identity Lifecycle Manager (ILM) 2007 Feature Pack 1 (FP1). En particulier, je vous montrerai comment intégrer SharePoint avec ILM 2007 pour coordonner la configuration d'objets d'annuaire pour les bibliothèques de documents SharePoint. Vous pouvez trouver les outils, le code source et les instructions détaillées pour créer cette solution dans le matériel associé à cet article, disponible dans la section de téléchargement des codes de .com.

Service de gestion d'annuaire SharePoint

Contrairement à Exchange Server, qui utilise Active Directory pour pratiquement toutes les informations de configuration et de destinataire, SharePoint s'appuie sur des bases de données de contenu et de configuration. SharePoint doit en conséquence propager les informations de destinataire pour les bibliothèques, les listes et les groupes à extension messagerie de ses bases de données vers un annuaire. Après tout, les clients de messagerie s'attendent à trouver les informations de destinataire dans un carnet d'adresses, généralement généré à partir d'objets d'annuaire.

Dès l'installation, SharePoint inclut un service de gestion d'annuaire destiné à ces fins, qui fait partie du service Web d'intégration de messagerie électronique (SharepointEmailWS.asmx) que vous pouvez configurer dans l'administration centrale de SharePoint 3.0, à la page Opérations, dans le paramétrage des messages électroniques entrants. La figure 1 illustre le fonctionnement du service de gestion d'annuaire intégré.

fig01.gif

Figure 1 Architecture du service de gestion d'annuaire SharePoint (Cliquez sur l'image pour l'agrandir)

Lorsque vous activez une batterie de serveurs Web pour la gestion d'annuaire puis attribuez une adresse de messagerie à une bibliothèque, une liste ou un groupe pour recevoir des messages, par exemple en utilisant EmailSettings.aspx, vous appelez implicitement le service Web d'intégration de messagerie électronique pour configurer les objets de destinataire correspondants dans Active Directory. Tout d'abord, SharePoint enregistre les informations d'adresse de messagerie dans la base de données de contenu. Ensuite, SharePoint envoie la requête de configuration en votre nom au service Web d'intégration de messagerie électronique en utilisant l'identité du compte de pool d'applications Web. Si la requête de configuration échoue, vous disposez des informations d'adresse de messagerie dans la base de données de contenu mais pas des objets de destinataire correspondants dans Active Directory.

Ressources supplémentaires

Les requêtes de configuration peuvent échouer pour plusieurs raisons. La raison la plus courante est l'absence d'autorisation d'accès à la métabase IIS. Comme SharepointEmailWS.asmx est conçu pour être un service Web pour les comptes de pool d'applications, ce service Web vérifie la métabase IIS pour voir si l'appelant est un compte de pool d'applications et refuse l'accès si ce n'est pas le cas, quels que soient les niveaux d'autorisation d'Active Directory et de votre site SharePoint.

Cependant, SharepointEmailWS.asmx exécute cette vérification d'accès sous l'identité de l'appelant, donc le compte de pool d'applications appelant doit accéder à la métabase pour vérifier ses propres autorisations d'accès. Cela vous oblige à accorder à vos comptes de pool d'applications des autorisations élevées pour réussir.

Bien sûr, des autorisations élevées sur un serveur Web sont une source de problèmes de sécurité. Il existe de meilleures façons de contrôler l'accès à un service Web ASP.NET. De plus, SharePoint s'attend à trouver le service de gestion d'annuaire dans le site d'administration centrale. Toutefois, ce site n'est pas toujours disponible dans une batterie de serveurs Web verrouillée pour réduire la surface d'exposition aux attaques. Donc, si vous voulez utiliser le service de gestion d'annuaire intégré dans votre environnement de production SharePoint, vous devez accepter une configuration de sécurité affaiblie.

Les autres restrictions qui existent viennent du fait que le service de gestion d'annuaire intégré est basé sur une architecture client/serveur étroitement couplée. Microsoft.SharePoint.dll utilise directement System.DirectoryServices.dll, donc vous ne pouvez pas implémenter votre propre logique pour personnaliser le processus de configuration. Par exemple, l'implémentation du service de gestion d'annuaire intégré n'écrit pas tous les attributs de destinataire pour prendre en charge Exchange Server 2007, et il n'est pas possible de personnaliser les règles de génération d'attribut.

L'impossibilité d'implémenter votre propre logique implique également que vous ne pouvez pas personnaliser le processus de configuration, par exemple, pour implémenter des approbations personnalisées. SharePoint prend en charge les processus d'approbation pour les groupes, mais cette fonctionnalité est basée sur le site d'administration centrale. Seuls les administrateurs de batterie SharePoint peuvent approuver les requêtes en cours, mais les administrateurs SharePoint ne sont pas nécessairement en charge de l'approbation des processus de configuration d'Active Directory.

Et chose peut-être encore plus importante, il n'existe pas de processus d'approbation pour les listes et les bibliothèques de documents à extension messagerie. Si vous activez la gestion d'annuaire, vous accordez essentiellement à tous les administrateurs du site de votre batterie de serveurs Web le droit de créer des contacts et des groupes à extension messagerie dans Active Directory. Il n'est pas non plus possible de structurer la gestion de destinataire sur la base des unités d'organisation (OU), parce que tous les objets de destinataire par batterie de serveurs Web sont placés dans la même OU.

Vous ne pouvez pas déplacer les objets de destinataire vers une autre OU parce que le service de gestion d'annuaire s'attend à trouver les objets de destinataire dans l'OU SharePoint, et que vous devez accorder au compte de pool d'applications de l'administration centrale SharePoint les autorisations administratives dans Active Directory. Par ailleurs, il n'est pas possible d'implémenter la synchronisation bidirectionnelle entre SharePoint et Active Directory. La modification des attributs d'objet dans Active Directory ne propage pas les modifications en retour dans l'environnement SharePoint.

Service de gestion d'annuaire personnalisé

Maintenant que j'ai établi que le service de gestion d'annuaire intégré laisse un peu de liberté pour plus de flexibilité, discutons de l'une ou l'autre solution alternative. La bonne nouvelle, c'est que SharePoint vous permet d'implémenter votre propre service de gestion d'annuaire. Il vous suffit pour cela d'enregistrer votre service Web en tant que service de gestion d'annuaire distant dans l'administration centrale de SharePoint 3.0, à la page Opérations, dans le paramétrage des messages électroniques entrants.

Pour des instructions détaillées concernant le déploiement et l'enregistrement d'un service Web personnalisé, reportez-vous à la feuille de travail « Directory Integration Based on a Custom Directory Management Service.xps » dans le matériel associé. Par ailleurs, mon service Web personnalisé montre comment configurer les objets de destinataire compatibles avec Exchange Server 2007 dans Active Directory sans applets de commande ou outils de gestion Exchange. Le code source correspondant se trouve dans le dossier EmailIntegrationService. La figure 2 illustre l'architecture de la solution.

fig02.gif

Figure 2 Architecture du service de gestion d'annuaire personnalisé (Cliquez sur l'image pour l'agrandir)

L'interface du service Web personnalisé doit correspondre à l'interface du service de gestion d'annuaire, comme décrit dans le SDK SharePoint. Si vous recherchez « SharepointEmailWS » sur le site Web MSDN® (msdn.microsoft.com), vous trouverez tous les détails nécessaires. Vous pouvez également consulter le fichier Service.cs dans le dossier EmailIntegrationService\App_Code du matériel associé. Ce fichier implémente l'interface de service Web requise, tandis que le véritable code de configuration des objets Active Directory réside dans SPRecipient.cs. Par exemple, la fonction UpdateRecipientAttributes dans SPRecipient.cs génère les attributs Exchange Server 2007 requis. SPRecipient.cs est le fichier de code que vous devez remplacer si vous voulez développer votre propre service de gestion d'annuaire personnalisé.

Un service de gestion d'annuaire personnalisé est un bon outil pour surmonter les exigences d'autorisations élevées et intégrer SharePoint avec des systèmes de messagerie ou d'annuaire tiers. Vous ne devez pas vérifier la métabase IIS pour limiter l'accès du service Web aux comptes de pool d'applications. Au lieu de cela, vous pouvez ajouter une section <authorization> au fichier web.config de votre service Web (voir le matériel associé pour un exemple).

Toutefois, plusieurs problèmes subsistent parce que vous ne pouvez pas contrôler si et quand SharePoint appelle votre service de gestion d'annuaire. Entre autres choses, SharePoint n'appelle pas le service de gestion d'annuaire lorsque vous supprimez une bibliothèque ou liste de documents à extension messagerie, si bien qu'un objet de destinataire non valide reste dans Active Directory. Que vous utilisiez le service de gestion d'annuaire intégré ou une solution personnalisée, vous ne pouvez pas garantir que les informations de destinataire dans Active Directory correspondent aux ressources SharePoint.

SharePoint et ILM

Pour une intégration d'annuaire fiable, vous devez envisager de déployer un package de gestion d'annuaire professionnel, tel qu'ILM. Ce système repose sur un modèle de synchronisation d'annuaire basé sur l'extraction. Les agents de gestion extraient les informations de leurs sources connectées, les importent dans un méta-annuaire commun et exportent les informations d'exportation du méta-annuaire vers leurs systèmes connectés. Les systèmes sources ne poussent généralement pas leurs informations dans le méta-annuaire. En extrayant les informations, vous pouvez garantir la cohérence avec chaque cycle de synchronisation.

Un autre avantage est qu'ILM inclut plusieurs agents de gestion pour prendre en charge Active Directory, Lotus Notes et divers autres systèmes prêts à l'emploi. Il vous suffit d'implémenter un agent de gestion personnalisé pour SharePoint afin de synchroniser les informations de SharePoint avec une autre plate-forme d'annuaire prise en charge dans votre environnement.

Vous devez implémenter la logique pour récupérer les informations voulues de SharePoint, enregistrer les informations dans un fichier d'importation et transférer les informations importées dans le méta-annuaire. Mais vous n'avez pas besoin d'implémenter la logique pour exporter ces informations du méta-annuaire dans Active Directory ou une autre plate-forme d'annuaire. La figure 3 montre comment implémenter la synchronisation de SharePoint à Active Directory en utilisant ILM. Il est également possible de réaliser la synchronisation dans l'autre direction pour configurer les ressources SharePoint pour les objets d'annuaire, bien que cela puisse être considéré comme inutile ou facultatif.

fig03.gif

Figure 3 Intégration d'annulaire basée sur Identity Lifecycle Manager (Cliquez sur l'image pour l'agrandir)

L'article d'Alex Tcherniakhovski « Connecting ILM 2007 with SharePoint Services Lists », disponible sur blogs.msdn.com/alextch/archive/2007/09/02/wsslistsandilm.aspx, est un bon point de départ pour développer un agent de gestion SharePoint. Alex explique comment créer une solution de gestion d'annuaire basée sur ILM qui s'appuie sur les requêtes de configuration InfoPath® envoyées à une bibliothèque de documents. L'agent de gestion d'Alex récupère toutes les requêtes approuvées de la bibliothèque de documents et crée les objets de méta-annuaire correspondants qui peuvent ensuite être exportés dans les annuaires connectés.

Mais par défaut, SharePoint ne génère pas de requêtes de configuration InfoPath lorsque vous activez la messagerie pour une liste ou un groupe. Vous pouvez le faire via un service de gestion d'annuaire personnalisé, mais vous rencontrerez alors les problèmes de cohérence mentionnés ci-dessus parce que SharePoint n'appelle pas le service de gestion d'annuaire dans tous les cas. Pour cette raison, je recommande que votre agent de gestion récupère les informations de destinataire SharePoint voulues directement depuis les listes et groupes de votre collection de sites. Si vous avez besoin de processus d'approbation, vous pouvez ensuite produire les requêtes de configuration InfoPath pour de nouvelles ressources dans l'agent de gestion et traiter par la suite toutes les requêtes approuvées.

Vous avez plusieurs options pour récupérer les informations de SharePoint. Vous pouvez lire les informations directement à partir des bases de données de contenu, utiliser le modèle objet de SharePoint ou profiter des services Web de SharePoint.

Il n'est pas recommandé d'accéder directement aux bases de données de contenu parce que les structures de base de données peuvent changer dans des versions futures, ce qui briserait votre solution de gestion d'annuaire.

L'utilisation du modèle d'objet de SharePoint directement dans votre agent de gestion est également risquée parce que le modèle d'objet nécessite que vous exécutiez e code localement. Cependant, l'installation d'ILM sur un serveur Web dans chaque batterie de SharePoint dans votre environnement peut compliquer l'infrastructure de gestion d'annuaire.

Vous pouvez envisager d'utiliser les services Web de SharePoint, mais cela crée une autre difficulté parce que les informations voulues ne sont pas facilement accessibles via les services Web de SharePoint, par exemple les informations d'adresse de messagerie pour les groupes SharePoint ou l'adresse complète du serveur de courrier entrant.

En fin de compte, il semble plus judicieux d'implémenter un service Web SharePoint personnalisé qui utilise le modèle d'objet de SharePoint pour récupérer les informations voulues et les transmet à l'appelant sous la forme d'un document XML. Maintenant, vous pouvez centraliser le déploiement d'ILM et intégrer un nombre illimité de batteries et collections de sites via des instances individuelles du service Web SharePoint personnalisé, comme illustré à la figure 3.

Il convient d'aborder un dernier d'aspect, à savoir le fait que l'intégration d'annulaire basée sur ILM ne dispense pas d'un service de gestion d'annuaire personnalisé. Ce service personnalisé n'a pas besoin de faire quoi que ce soit parce qu’ILM configure les objets d'annuaire, mais vous devez fournir un service personnalisé afin de pouvoir activer la gestion d'annuaire dans l'administration centrale de SharePoint 3.0. À défaut, par exemple, vous ne pourrez pas attribuer des adresses de messagerie aux groupes en premier lieu. La figure 4 montre l'architecture de la solution obtenue.

fig04.gif

Figure 4 Intégration d'annuaire SharePoint basée sur un service Web (Cliquez sur l'image pour l'agrandir)

Vous pouvez transformer le service de gestion d'annuaire personnalisé inclus dans le matériel associé en un service factice en réglant le paramètre OpMode dans le fichier web.config (<add key="OpMode" value="dummy"/>). Dans cette configuration, le service personnalisé renvoie toujours SUCCESS en réponse aux appels de configuration sans rien faire.

Par ailleurs, le service personnalisé expose une méthode ResolveUsers que l'agent de gestion SharePoint peut appeler pour résoudre les noms du compte d'utilisateur basés sur NetBIOS en noms uniques, ce qui est une étape requise pour la configuration de groupes. (SharePoint renvoie des informations d'appartenance au groupe sous la forme d'une liste de noms de compte d'utilisateur basés sur NetBIOS, mais Active Directory s'attend à des noms uniques). Et c'est tout ! Pour plus de détails sur la façon de déployer la solution obtenue, reportez-vous au fichier « Configuring Directory Integration based on ILM 2007.xps » dans le matériel associé.

WS 3.0 et MOSS 2007 incluent un service de gestion d'annuaire pour intégrer SharePoint avec Exchange Server 2003 pour une collaboration multiplate-forme basée sur la messagerie.

Il existe toutefois plusieurs restrictions. Les utilisateurs doivent remplacer le service de gestion d'annuaire intégré par une solution personnalisée. Vous pouvez également utiliser une solution de gestion d'annuaire professionnelle, comme ILM, pour intégrer SharePoint dans une infrastructure de gestion d'annuaire. Cela fournit le plus grand niveau de flexibilité et aide à garantir la cohérence des informations via un modèle de synchronisation basé sur l'extraction.

Pav Cherny est un expert informatique et auteur spécialisé dans les technologies Microsoft pour la collaboration et la communication unifiée. Ses publications incluent des livres blancs, des manuels de produits et des livres avec un intérêt particulier pour les opérations informatiques et l'administration système. Pav est le président de Biblioso Corporation, une entreprise spécialisée dans les services de documentation et de localisation gérés.