Comment : 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, l'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 Membership and Role Provider. Pour plus d'informations sur l'utilisation de la fonctionnalité de fournisseur de rôle 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. Elle 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, wsHttpBinding Element) et affectez UserName au type d'informations d'identification du client. 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.
Remarque : |
---|
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
Dans le fichier Web.config, sous l'élément <system.web>, créez un élément <membership>.
Sous l'élément <membership>, créez un élément <providers>.
Ajoutez un élément <clear /> en tant qu'enfant de l'élément <providers> afin de vider la collection de fournisseurs.
Sous l'élément <clear />, créez un élément <add> avec les attributs suivants définis aux 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
Dans le fichier de configuration, sous l'élément <system.ServiceModel>, ajoutez un élément <bindings>.
Ajoutez un wsHttpBinding Element à la section des liaisons. Pour plus d'informations sur le sujet suivant la création d'un élément de liaison WCF, consultez Comment : spécifier une liaison de service dans la configuration.
Affectez à l'attribut mode de l'élément <security> la valeur Message.
Affectez UserName à l'attribut clientCredentialType de l'élément <message>. 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
Ajoutez un <behaviors> en tant qu'enfant de l'élément <system.serviceModel>.
Ajoutez une section serviceBehaviors section à l'élément <behaviors>.
Ajoutez un Behavior element et affectez une valeur appropriée à l'attribut name.
Ajoutez un élément <serviceCredentials> Element à l'élément <behavior>.
Ajoutez un userNameAuthentication element à l'élément <serviceCredentials>.
Affectez MembershipProvider à l'attribut userNamePasswordValidationMode.
Remarque : Si la valeur userNamePasswordValidationMode n'est pas définie, WCF utilise l'authentification Windows au lieu du fournisseur d'appartenances ASP.NET. 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="https://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
Tâches
Comment : utiliser le fournisseur de rôle ASP.NET avec un service
Membership and Role Provider