[WSS] Fournisseurs d’authentification sous Windows SharePoint Service 3.0
Avant de rentrer dans le vif du sujet, je vous rappelle que WSS (Windows Sharepoint Service) version 3.0 est sortie en version RTM depuis le 13 novembre. Vous pouvez le téléchargement librement (à condition d’avoir un Windows authentique!) à cette adresse : http://www.microsoft.com/downloads/…. Vous y trouverez les versions US, FR, et autres.
La procédure d’installation est sensiblement la même que celle que j’avais décrite pour la beta 2 (lire mon post du 20/07) hormis que vous installerez directement le .NET 3.0 étant sortie en RTM à la place des runtimes du Workflow Foundation.
Si vous ne connaissez pas WSS, je vous invite également à lire mon précédent post qui en fait une courte introduction.
Par défaut un site WSS est configuré pour utiliser une authentification de type Windows où chaque compte utilisateur du site est un utilisateur NT (stocké dans la base SAM local ou Active Directory sur un domaine). Pratique dans le cadre d’un portail entreprise ou école mais sur internet cela n’est pas forcement une bonne chose !
Sous WSS vous avez la possibilité de changer le fournisseur d’authentification et donc « facilement » de pouvoir utiliser celui de l’ ASP.NET2 (SqlMembershipProvider/SqlRoleProvider) où les comptes utilisateur seront stockés sur une base SQL ce qui sera plus appréciable pour l’administration.
1/ Préparation de la base
L’instance SQL de WSS (SSEE) n’est exploitable (car verrouillé), il vous faudra donc une autre instante en installant, par exemple, la version Express d’ SQL Server 2005. Une fois opérationnelle, créez une base « MonSiteWSS » ainsi qu’un utilisateur SQL pouvant lire et écrire dans la base.
Enfin utilisez l’utilitaire aspnet_regsql.exe (contenu dans C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727) sur votre base pour préparer les tables ASP.NET
2/ Configuration du Web.config
Editez le fichier Web.config de votre application WSS (C:\Inetpub\wwwroot\wss\VirtualDirectories\xxx) pour y rajouter :
- La chaine de connexion à votre base. Exemple (à placer dans la balise <configuration>) :
1 2 3 4 | <connectionStrings> <add name="maConnString" connectionString="server=MONSERVER\SQLEXPRESS;database=MonSiteWSS;user id=MonUser;password=MonMotDePasse" providerName="System.Data.SqlClient" /> </connectionStrings> |
- Le MembershipProvider (dans <system.web>) et RoleProvider :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <membership defaultProvider="monMembershipProvider"> <providers> <add name="monMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="maConnString" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="1" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" /> </providers> </membership> <roleManager enabled="true" defaultProvider="monRoleProvider"> <providers> <add name="monRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="maConnString" applicationName="/" /> </providers> </roleManager> |
Effectuez aussi ces changements dans le Web.config de l’application central de Sharepoint vous comprendrez plus tard pourquoi (merci TheMit ^^) !!
3/ Gestion des comptes
Le but ici est d’avoir une page (ou un site) d’administration des comptes. Pour cela plusieurs solutions sont viables. Par exemple :
- En créant un site ASP.NET sous Visual Studio 2005, y rajouter la connection string, membership et role provider dans le web.config. Puis dans le menu « Web Site » cliquer sur « ASP.NET Configuration » pour lancer le site d’administration. Dans l’onglet Security l’on pourra administrer les comptes et les rôles.
- En créant une simple page ASP.NET que l’on vient placer dans le site WSS (dans un dossier admin par exemple) et qui utilise la classe System.Web.Security.Membership et System.web.Security.roles pour gérer vos comptes. (possibilité d’utiliser la MasterPage de WSS pour votre page histoire d’intégrer à fond votre page d’admin dans votre site WSS).
Une fois que vous avez mis en place un moyen d’administration de vos comptes, créez un 1er compte (nommé Admin par exemple).
4/ Changer le fournisseurs d’authentification de votre site WSS
Le changement est assez simple :
- Connectez vous à l’ Administration centrale de SharePoint 3.0 (dans les Outils d’administrations)
- Dans l’onglet « Gestion des applications », cliquez sur « Fournisseurs d’authentification ».
- Sélectionnez la zone de l’application que vous souhaitez modifié (Zone : Par défaut, Internet, Intranet, …)
- Sur la page « Modifier l’authentification », sélectionnez l’authentification de type « Formulaires »
- Entrez dans « Nom du fournisseur d’appartenances » le nom de votre Membership Provider (dans notre exemple monMembershipProvider) et dans « Nom du gestionnaire de rôles » le nom de votre Role Provider (ici monRoleProvider).
- Puis enregistrez les modifications
Avant de quitter l’administration central, n’oubliez pas de définir votre 1er compte comme « Administrateurs de collections de sites » pour qu’il puisse se connecter ! Pour cela toujours dans l’onglet « Gestion des applications », sélectionnez « Administrateurs de collections de sites » et entrez le nom du compte (ex: Admin). C’est la que les informations (connstring, membership, etc..) ajoutées dans le Web.config du site de l’administration central prend tout son sens sinon l’administration central ne reconnaitra pas votre utilisateur !
En retournant sur votre site, vous verrez une belle page de login
.. avec la possibilité de gérer tous vos comptes online (on peut ensuite créer une page d’inscription, récupération des pwd perdu et tout cela très facilement/rapidement avec les objets ASP.NET2)
Alors pas si compliqué 🙂 Un bon article de Andrew Connell est disponible ici. La procédure est un peu différente et l’article beaucoup plus détaillé. A lire !
Moi je dis, vive WSS 🙂