Gewusst wie: Verwenden des ASP.NET-Mitgliedschaftsanbieters
Der ASP.NET-Mitgliedschaftsanbieter ist eine Funktion für ASP.NET-Entwickler zum Erstellen von Websites, mit denen die Benutzer eindeutige Kombinationen aus Benutzername und Kennwort erstellen können. Jeder Benutzer kann damit ein Konto auf dieser Site erstellen und sich für den exklusiven Zugriff auf diese Site und ihre Dienste anmelden. Dies steht im Gegensatz zur Windows-Sicherheit, bei der die Benutzer über Konten in einer Windows-Domäne verfügen müssen. Stattdessen kann jeder Benutzer, der seine Anmeldeinformationen (Kombination aus Benutzername und Kennwort) angibt, die Site und ihre Dienste nutzen.
Eine Beispielanwendung finden Sie unter Mitgliedschafts- und Rollenanbieter. Informationen zum Verwenden der ASP.NET-Rollenanbieterfunktion finden Sie unter Vorgehensweise: Verwenden des Rollenanbieters für den ASP.NET bei einem Dienst.
Die Mitgliedschaftsfunktion setzt die Verwendung einer SQL Server-Datenbank zum Speichern der Benutzerdaten voraus. Die Funktion schließt auch Methoden zum Anzeigen einer Frage für Benutzer ein, die ihr Kennwort vergessen haben.
Windows Communication Foundation (WCF)-Entwickler können diese Funktionen für Sicherheitszwecke nutzen. Wenn sie in eine WCF-Anwendung integriert sind, müssen die Benutzer der WCF-Clientanwendung eine Kombination aus Benutzername und Kennwort bereitstellen. Damit die Daten an den WCF-Dienst übertragen werden, müssen Sie eine Bindung verwenden, die die Benutzernamen-/Kennwortanmeldeinformationen unterstützt, z. B. WSHttpBinding (in der Konfiguration wsHttpBinding Element), und den Clientanmeldetyp auf UserName festlegen. Die WCF-Sicherheit des Diensts authentifiziert den Benutzer basierend auf Benutzername und Kennwort und weist die von der ASP.NET-Rolle angegebene Rolle zu.
Hinweis: |
---|
WCF stellt keine Methoden bereit, um die Datenbank mit Benutzername-Kennwort-Kombinationen oder anderen Benutzerdaten zu füllen. |
So konfigurieren Sie den Mitgliedschaftsanbieter
Erstellen Sie unter dem <system.web>-Element der Datei Web.config ein <membership>-Element.
Erstellen Sie unter dem <membership>-Element ein <providers>-Element.
Fügen Sie der Datei Web.config das folgende <clear />-Element als untergeordnetes Element des <providers>-Elements hinzu, um die Liste der Anbieter zu löschen.
Erstellen Sie unterhalb des <clear />-Elements ein <add>-Element, und legen Sie die folgenden Attributwerte fest: name, type, connectionStringName, applicationName, enablePasswordRetrieval, enablePasswordReset, requiresQuestionAndAnswer, requiresUniqueEmail und passwordFormat. Das name-Attribut wird später als Wert in der Konfigurationsdatei verwendet. Im folgenden Beispiel wird es auf
SqlMembershipProvider
festgelegt.Im folgenden Beispiel wird der Konfigurationsabschnitt angegeben.
<!-- 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>
So konfigurieren Sie Dienstsicherheit, die eine Kombination aus Benutzername und Kennwort akzeptiert
Fügen Sie in der Konfigurationsdatei unterhalb des <system.ServiceModel>-Elements ein <bindings>-Element ein.
Fügen Sie dem Bindungsabschnitt ein wsHttpBinding Element hinzu. Weitere Informationen über über das Erstellen eines WCF-Bindungselements finden Sie unter Vorgehensweise: Angeben einer Dienstbindung in einer Konfiguration.
Legen Sie das mode-Attribut des <security>-Elements auf Message fest.
Legen Sie das clientCredentialType-Attribut des <message>-Elements auf UserName fest. Dies gibt an, dass ein Benutzername-Kennwort-Paar als Anmeldeinformationen für den Client verwendet wird.
Das folgende Beispiel zeigt den Konfigurationscode für die Bindung.
<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>
So konfigurieren Sie einen Dienst für die Verwendung des Mitgliedschaftsanbieters
Fügen Sie ein <behaviors>-Element als untergeordnetes Element des <system.serviceModel>-Elements hinzu.
Fügen Sie dem <behaviors>-Element ein serviceBehaviors section-Element hinzu.
Fügen Sie ein Behavior element-Element hinzu, und legen Sie das name-Attribut auf einen entsprechenden Wert fest.
Fügen Sie dem <behavior>-Element ein <serviceCredentials> Element-Element hinzu.
Fügen Sie dem <serviceCredentials>-Element ein userNameAuthentication element-Element hinzu.
Legen Sie das userNamePasswordValidationMode-Attribut auf MembershipProvider fest.
Hinweis: Wenn der userNamePasswordValidationMode-Wert nicht festgelegt ist, verwendet WCF die Windows-Authentifizierung statt des ASP.NET-Mitgliedschaftsanbieters. Legen Sie das membershipProviderName-Attribut auf den Namen des Anbieters fest (wurde beim Hinzufügen des Anbieters im ersten Verfahren in diesem Thema angegeben). Im folgenden Beispiel sehen Sie das <serviceCredentials>-Fragment bis zu diesem Punkt:
<behaviors> <serviceBehaviors> <behavior name="MyServiceBehavior"> <serviceCredentials> <userNameAuthentication userNamePasswordValidationMode="MembershipProvider" membershipProviderName="SqlMembershipProvider" /> </serviceCredentials> </behavior> </serviceBehaviors> </behaviors>
Beispiel
Das folgende Codebeispiel zeigt die Konfiguration für einen Dienst, der die ASP-Mitgliedschaftsfunktion verwendet.
<?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>
Siehe auch
Aufgaben
Vorgehensweise: Verwenden des Rollenanbieters für den ASP.NET bei einem Dienst
Mitgliedschafts- und Rollenanbieter