Procédure : utiliser le fournisseur d’appartenances ASP.NET

Le fournisseur d’appartenances ASP.NET est une fonctionnalité qui permet aux développeurs ASP.NET de créer des sites Web permettant aux utilisateurs de créer des combinaisons uniques de nom d’utilisateur et de mot de passe. Grâce à cette fonctionnalité, les utilisateurs peuvent établir un compte avec le site et disposer d'un accès exclusif à celui-ci et à ses services. Cette approche diffère de la sécurité Windows, qui requiert que les utilisateurs disposent de comptes dans un domaine Windows. Au lieu de cela, tout utilisateur qui fournit ses informations d’identification (combinaison nom d’utilisateur/mot de passe) peut utiliser le site et ses services.

Pour obtenir un exemple d’application, consultez Fournisseur d’appartenances et de rôles. Pour des informations sur l’utilisation de la fonctionnalité Fournisseur de rôles d’ASP.NET, consultez Comment : Utiliser le fournisseur de rôle ASP.NET avec un service.

La fonctionnalité d’appartenance requiert l’utilisation d’une base de données SQL Server pour stocker les informations utilisateur. La fonctionnalité inclut également des méthodes qui consistent à poser une question aux utilisateurs qui ont oublié leur mot de passe.

Les développeurs Windows Communication Foundation (WCF) peuvent tirer parti de ces fonctionnalités à des fins de sécurité. En cas d’intégration dans une application WCF, les utilisateurs doivent fournir une combinaison nom d’utilisateur/mot de passe à l’application cliente WCF. Pour transférer les données au service WCF, utilisez une liaison qui prend en charge les informations d’identification nom d’utilisateur/mot de passe, telle que WSHttpBinding (dans la configuration, la <wsHttpBinding>) et définissez le type d’informations d’identification du client sur UserName. Sur le service, la sécurité WCF authentifie l’utilisateur en fonction du nom et du mot de passe, et assigne également le rôle spécifié par le rôle ASP.NET.

Notes

WCF ne fournit pas de méthode visant à remplir la base de données avec les combinaisons nom d’utilisateur/mot de passe ou autres informations utilisateur.

Pour configurer le fournisseur d'appartenances

  1. Dans le fichier Web.config, sous l’élément <system.web>, créez un élément <membership>.

  2. Sous l'élément <membership>, créez un élément <providers>.

  3. En guise d’enfant de l’élément <providers>, ajoutez un élément <clear /> afin de vider la collection de fournisseurs.

  4. Sous l’élément <clear />, créez un élément <add> avec les attributs suivants définis sur des valeurs appropriées : name, type, connectionStringName, applicationName, enablePasswordRetrieval, enablePasswordReset, requiresQuestionAndAnswer, requiresUniqueEmail et passwordFormat. L'attribut name est utilisé ultérieurement comme valeur dans le fichier de configuration. L'exemple suivant lui affecte la valeur SqlMembershipProvider.

    L'exemple suivant présente la section de configuration.

    <!-- Configure the Sql Membership Provider -->
    <membership defaultProvider="SqlMembershipProvider" userIsOnlineTimeWindow="15">
      <providers>
        <clear />
          <add
            name="SqlMembershipProvider"
            type="System.Web.Security.SqlMembershipProvider"
            connectionStringName="SqlConn"
            applicationName="MembershipAndRoleProviderSample"
            enablePasswordRetrieval="false"
            enablePasswordReset="false"
            requiresQuestionAndAnswer="false"
            requiresUniqueEmail="true"
            passwordFormat="Hashed" />
      </providers>
    </membership>
    

Pour configurer la sécurité de service afin d'accepter la combinaison nom d'utilisateur/mot de passe

  1. Dans le fichier de configuration, sous l’élément <system.serviceModel>, ajoutez un élément <bindings>.

  2. Ajoutez une <wsHttpBinding> à la section des liaisons. Pour plus d’informations sur la création d’une liaison, consultez le Guide pratique pour spécifier une liaison de service dans la configuration.

  3. Affectez à l'attribut mode de l'élément <security> la valeur Message.

  4. Affectez à l’attribut clientCredentialType de l’élément <message> la valeur UserName. Cela spécifie qu'une paire nom d'utilisateur/mot de passe sera utilisée comme information d'identification du client.

    L’exemple suivant présente le code de configuration de la liaison.

    <system.serviceModel>
    <bindings>
      <wsHttpBinding>
      <!-- Set up a binding that uses UserName as the client credential type -->
        <binding name="MembershipBinding">
          <security mode ="Message">
            <message clientCredentialType ="UserName"/>
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    </system.serviceModel>
    

Pour configurer un service permettant d'utiliser le fournisseur d'appartenances

  1. En guise d’enfant de l’élément <system.serviceModel>, ajoutez un élément <behaviors>

  2. Ajoutez un élément <serviceBehaviors> à l’élément <behaviors>.

  3. Ajoutez un élément <behavior>, puis affectez à l’attribut name une valeur appropriée.

  4. Ajoutez des <serviceCredentials> à l’élément <behavior>.

  5. Ajoutez une <userNameAuthentication> à l’élément <serviceCredentials>.

  6. Affectez à l'attribut userNamePasswordValidationMode la valeur MembershipProvider.

    Important

    Si la valeur userNamePasswordValidationMode n’est pas définie, WCF utilise l’authentification Windows au lieu du fournisseur d’appartenances ASP.NET.

  7. Affectez à l'attribut membershipProviderName le nom du fournisseur (spécifié lors de l'ajout du fournisseur dans la première procédure de cette rubrique). L'exemple suivant présente le fragment <serviceCredentials> à ce point.

    <behaviors>
       <serviceBehaviors>
          <behavior name="MyServiceBehavior">
             <serviceCredentials>
                <userNameAuthentication
                userNamePasswordValidationMode="MembershipProvider"
                membershipProviderName="SqlMembershipProvider" />
             </serviceCredentials>
          </behavior>
       </serviceBehaviors>
    </behaviors>
    

Exemple

Le code suivant montre la configuration d’un service qui utilise la fonctionnalité d’appartenance ASP.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="MyServiceBehavior" name="Microsoft.Samples.GettingStarted.CalculatorService">
        <endpoint address="http://microsoft.com/WCFservices/Calculator"
          binding="wsHttpBinding" bindingConfiguration="MembershipBinding"
          name="ASPmemberUserName" contract="Microsoft.Samples.GettingStarted.ICalculator" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyServiceBehavior">
          <serviceCredentials>
            <userNameAuthentication
              userNamePasswordValidationMode="MembershipProvider"
              membershipProviderName="SqlMembershipProvider" />
          </serviceCredentials>
        </behavior>
          </serviceBehaviors>
    </behaviors>
    <bindings>
      <wsHttpBinding>
        <binding name="MembershipBinding">
          <security mode="Message">
            <message clientCredentialType="UserName" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
  </system.serviceModel>
</configuration>

Voir aussi