Share via


Gewusst wie: Verwenden des ASP.NET-Mitgliedschaftsanbieters

Der ASP.NET-Mitgliedschaftsanbieter ist ein Feature 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 Membership and Role Provider. Informationen zum Verwenden des ASP.NET-Rollenanbieterfeatures finden Sie unter Gewusst wie: Verwenden des Rollenanbieters für den ASP.NET bei einem Dienst.

Das Mitgliedschaftsfeature setzt die Verwendung einer SQL Server-Datenbank zum Speichern der Benutzerdaten voraus. Das Feature 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 Features 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.

Tipp

WCF stellt keine Methoden bereit, um die Datenbank mit Benutzername-Kennwort-Kombinationen oder anderen Benutzerdaten zu füllen.

So konfigurieren Sie den Mitgliedschaftsanbieter

  1. Erstellen Sie unter dem <system.web>-Element der Datei Web.config ein <providers>-Element.

  2. 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.

  3. 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

  1. Fügen Sie in der Konfigurationsdatei unterhalb des <system.ServiceModel>-Elements ein <bindings>-Element ein.

  2. Fügen Sie dem Bindungsabschnitt ein wsHttpBinding Element hinzu. Weitere Informationen über das Erstellen eines WCF-Bindungselements finden Sie unter Gewusst wie: Angeben einer Dienstbindung in einer Konfiguration.

  3. Legen Sie das mode-Attribut des <security>-Elements auf Message fest.

  4. 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

  1. Fügen Sie ein <behaviors>-Element als untergeordnetes Element des <system.serviceModel>-Elements hinzu.

  2. Fügen Sie dem <behaviors>-Element ein serviceBehaviors section-Element hinzu.

  3. Fügen Sie ein Behavior element-Element hinzu, und legen Sie das name-Attribut auf einen entsprechenden Wert fest.

  4. Fügen Sie dem <behavior>-Element ein <serviceCredentials> Element-Element hinzu.

  5. Fügen Sie dem <serviceCredentials>-Element ein userNameAuthentication element-Element hinzu.

  6. Legen Sie das userNamePasswordValidationMode-Attribut auf MembershipProvider fest.

    Tipp

    Wenn der userNamePasswordValidationMode-Wert nicht festgelegt ist, verwendet WCF die Windows-Authentifizierung statt des ASP.NET-Mitgliedschaftsanbieters.

  7. Legen Sie das membershipProviderName-Attribut auf den Namen des Anbieters fest (wird beim Hinzufügen des Anbieters im ersten Verfahren in diesem Thema angegeben). Im folgenden Beispiel sehen Sie das <serviceCredentials>-Fragment bis zu diesem Punkt:

    <serviceCredentials>
      <userNameAuthentication userNamePasswordValidationMode ="MembershipProvider" 
          membershipProviderName ="SqlMembershipProvider"/>
    </serviceCredentials>
    

Siehe auch

Aufgaben

Gewusst wie: Verwenden des Rollenanbieters für den ASP.NET bei einem Dienst

Weitere Ressourcen

Membership and Role Provider