Membership Provider

Comment utiliser un Membership provider pour autoriser des personnes externe à votre AD à se logger

05/05/2010 4 501 lectures 1 commentaire 4.6/5 (5 votes) Christopher Clement Sébastien Sougnez

La structure interne ainsi que le design d'AreaProg ont récemment été modifiés.
Suite à cela, le format de certains articles a été perturbé. Le problème est connu et en cours de résolution. Merci de votre compréhension.

[LANGUAGE="FR"]Dans ce tutoriel, nous allons voir comment utiliser une base de données SQL pour permettre à des visiteurs de s’authentifier sur notre site. Pour cela nous allons utiliser un Membership Provider. Commençons par créer la base de données en utilisant aspnet_regsql.exe qui se trouve par défaut dans le dossier « C:WINDOWSMicrosoft.NETFrameworkv2.0.50727 ». Au lancement, cet utilitaire ouvre une fenêtre de configuration. Configurez-le pas à pas pour créer la base de données « aspnetdb ».
Image
Image
Image
Image
Image
Une fois la base de données créée, vous la verrez dans SQL Server.
Image
Nous allons créer un utilisateur qui sera maître de cette nouvelle base de données et qui servira de login à notre application.
Image
Créons le user et donnons-lui la base de données « aspnetdb » par défaut.
Image
Donnons-lui aussi le rôle de dbowner.
Image
Une fois le compte admin de la base de données créé, nous allons ajouter des utilisateurs. Pour cela, nous allons créer une application web de gestion.
Image
Une fois l’application créée, nous allons ajouter au web.config 3 éléments : 1) La connexion string :
<connectionStrings>
    <add name="TutoConnectionString"  connectionString="Votre connectionstring" providerName="System.Data.SqlClient" />
  </connectionStrings>
Pour info, Visual Studio contient un utilitaire qui peut construire notre string, dans l’onglet Tools, choisissons Connect to database.
Image
Sélectionnons Microsoft SQL Server.
Image
Dans la fenêtre Add connection, sélectionnons notre serveur, renseignons nos login et mot de passe et selectionnons la base de données aspnetdb.
Image
Si nous voulons tester la connexion, un bouton « Test Connection » est prévu à cet effet.
Image
Pour récupérer notre connexion, cliquons sur Advanced et récupérons la data source.
Image
2) Le membership provider : Dans la balise system.web, ajoutons les éléments suivants :
<membership defaultProvider="TutoMembershipProvider">
      <providers>
        <add name="TutoMembershipProvider"   
             type="System.Web.Security.SqlMembershipProvider, System.Web,Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
             connectionStringName="TutoConnectionString"
             enablePasswordRetrieval="false"
             enablePasswordReset="true"
             requiresQuestionAndAnswer="false"
             applicationName="/"
             requiresUniqueEmail="false"
             passwordFormat="Hashed"
             maxInvalidPasswordAttempts="5"
             minRequiredPasswordLength="1"
             minRequiredNonalphanumericCharacters="0"
             passwordAttemptWindow="10"
             passwordStrengthRegularExpression=""
             />
      </providers>
    </membership>
Ces paramètres sont utilisés pour mettre en place un niveau de sécurité des mots de passe. Pour ce tuto nous ne mettrons que le strict minimum (longueur de 1, pas d’expression régulière ou de caractère non-alphanumérique).
minRequiredPasswordLength="1"
minRequiredNonalphanumericCharacters="0"
passwordStrengthRegularExpression=""
3) Le role provider :
	
<roleManager enabled="true" defaultProvider="TutoRoleProvider">
      <providers>
        <add name="TutoRoleProvider"
             type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
             connectionStringName="TutoConnectionString"
             applicationName="/"
         />
      </providers>
    </roleManager>
Une fois ces éléments ajoutés au web.config nous pouvons maintenant ajouter des utilisateurs à notre base de données. Pour cela nous allons passer par l’ASP .NET Configuration de Visual Studio qui se situe dans l’onglet Project.
Image
Image
La première opération que nous devons réaliser se passe dans l’onglet « Sécurité ».
Image
Ici, nous allons changer le type d’authentification qui est basiquement en Windows pour le faire passer en form.
Image
En choisissant l’option « A partir d’Internet » nous pourrons maintenant ajouter des utilisateurs dans la base de données. Après avoir cliqué sur « terminer » revenons dans l’onglet sécurité.
Image
En cliquant sur « Créer un utilisateur », nous pourrons ajouter un utilisateur à notre base de données.
Image
Une fois les données enregistrées, vérifions que la case « Utilisateur actif » est bien cochée et cliquons sur « Créer un utilisateur ».
Image
Notre configuration au niveau de la base de données est finie. Maintenant, nous allons attaquer la partie SharePoint ! Pour ce tutoriel, nous allons être soigneux et partir de 0. Nous allons tout d’abord créer la web application qui servira de coté « extranet » et qui sera accessible via la windows authentication basique.
Image
Image
Image
Laissez tous les paramétrages par défaut (comme vous le voyez j’ai juste spécifié le port à 2000 et le nom de la base de données a WSS_Content_2000). Une fois l’application créée, créons une nouvelle collection de site sur base d’un modèle de publication.
Image
Nous voici donc devant un site de publication tout ce qu’il y a de plus basique accessible via la windows authentication
Image
Nous allons maintenant créer notre site internet qui sera accessible par des personnes externes. Commençons par étendre notre application web
Image
Image
Image
Soyez sûr de sélectionner la web application que nous venons de créer et de définir la zone sur « Internet ». Quand toutes les infos sont renseignées, cliquez sur « OK ». Maintenant que nos applications sont définies, nous devons encore modifier les web.config. Les modifications des web.config des 2 web applications sont identiques. Faisons une recherche sur :
</SharePoint>
Nous tombons sur un bloc de code ressemblant à :
</SharePoint>
  <system.web>
    <securityPolicy>
      <trustLevel name="WSS_Medium" policyFile="C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions12configwss_mediumtrust.config" />
      <trustLevel name="WSS_Minimal" policyFile="C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions12configwss_minimaltrust.config" />
    </securityPolicy>
    <httpHandlers>
Ajoutons les 3 éléments que nous avons déjà ajoutés à notre web application, à savoir la connection string, le membership et le role provider afin que notre code ressemble à ceci.
</SharePoint>
  <connectionStrings>
    <add name="TutoConnectionString"  connectionString="Votre connectionstring" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <system.web>
    <membership defaultProvider="TutoMembershipProvider">
      <providers>
        <add name="TutoMembershipProvider"
             type="System.Web.Security.SqlMembershipProvider, System.Web,Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
             connectionStringName="TutoConnectionString"
             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="TutoRoleProvider">
      <providers>
        <add connectionStringName="TutoConnectionString" applicationName="/"
          name="TutoRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </providers>
    </roleManager>
    <securityPolicy>
      <trustLevel name="WSS_Medium" policyFile="C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions12configwss_mediumtrust.config" />
      <trustLevel name="WSS_Minimal" policyFile="C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions12configwss_minimaltrust.config" />
    </securityPolicy>
Maintenant, nous devons modifier l’authentication provider dans la centrale d’administration.
Image
Sélectionnons la zone « Internet ».
Image
Sur cet écran, nous allons renseigner le type d’authentification sur « forms» ainsi que le nom de nos membership provider et role manager.
Image
Une fois cela renseigné, il nous reste une chose à faire : donner à notre utilisateur le droit de se connecter sur notre site. Pour cela, passons par le coté extranet et ajoutons "josephine" a nos membres :
Image
Entrons le nom « josephine » :
Image
Après avoir cliqué sur le people picker, attendons quelques secondes pour que "josephine" soit soulignée !
Image
Image
Nous voyons bien que "josephine" fait partie de nos membres. Il est maintenant temps de tester le compte en allant sur le portail internet.
Image
Nous pouvons remarquer que l’accès à notre site est restreint. Introduisons le login et le mot de passe de "josephine".
Image
Apres avoir cliqué sur Sign In nous nous retrouvons identifié en tant que "josephine" sur notre site.
Image
Voilà, vous pouvez maintenant donner l’accès à des utilisateurs externe à votre site.

Noter

Veuillez vous identifier ou vous inscrire pour donner une note à cet article.

Commentaires / Questions

MarcSyde (11/05/2010 - 15:15)

Bravo Chritopher. Une bonne synthèse from scratch !

Veuillez vous identifier ou vous inscrire pour réagir à cet article.

Avatar

Christopher Clement

Envoyer un mail Site web LinkedIn Rédacteur

400 points

Avatar

Sébastien Sougnez

Envoyer un mail Site web Windows live messenger LinkedIn Twitter Facebook MVP Administrateur

25752 points