Freigeben über


Gewusst wie: Verwenden eines nicht standardmäßigem Mitgliedschaftsanbieters für den WCF-Authentifizierungsdienst

Aktualisiert: November 2007

In diesem Thema wird gezeigt, wie der Mitgliedschaftsanbieter programmgesteuert ausgewählt wird, wenn Sie den ASP.NET-Authentifizierungsdienst mithilfe von Windows Communication Foundation (WCF) aufrufen. Sie können einen nicht standardmäßigen Mitgliedschaftsanbieter verwenden, wenn Sie Benutzer mithilfe unterschiedlicher Mitgliedschaftsanbieter anhand der während der Laufzeit ermittelten Informationen authentifizieren müssen. Für die Authentifizierung durch einen nicht standardmäßigen Mitgliedschaftsanbieter erstellen Sie einen Ereignishandler für das Authenticating-Ereignis.

WCF verwenden Sie, damit der Authentifizierungsdienst einen Benutzer über eine Clientanwendung anmeldet, die SOAP 1.1-Nachrichten senden und empfangen kann, z. B. eine Java-Anwendung. Die Clientanwendung kann den Benutzer authentifizieren, indem die gleichen Benutzeranmeldeinformationen wie bei einer ASP.NET-Webanwendung verwendet werden.

So führen Sie die Authentifizierung mit einem standardmäßigen Mitgliedschaftsanbieter aus

  1. Erstellen und konfigurieren Sie den Mitgliedschaftsanbieter, den Sie verwenden möchten.

    Weitere Informationen finden Sie unter Implementieren eines Mitgliedschaftsanbieters und unter Konfigurieren einer ASP.NET-Anwendung für die Verwendung der Mitgliedschaft.

  2. Erstellen Sie in der Datei Global.asax einen Ereignishandler für das Authenticating-Ereignis, und fügen Sie Code hinzu, der Benutzer-Anmeldeinformationen durch Aufrufen eines benutzerdefinierten Mitgliedschaftsanbieters authentifiziert.

    Das folgende Beispiel zeigt einen Handler für das Authenticating-Ereignis, der Anmeldeinformationen mithilfe des Anbieters ContosoSqlProvider, FabrikamSqlProvider oder mithilfe des standardmäßigen Mitgliedschaftsanbieters authentifiziert. Die Benutzeranmeldeinformationen werden je nach dem Typ des Benutzers in unterschiedlichen Datenbanken gespeichert. Der Ereignishandler ermittelt den zu verwendenden Anbieter anhand der E-Mail-Adresse, die als Benutzername angegeben wird.

    Sub AuthenticationService_Authenticating _
       (ByVal sender As Object, _
        ByVal e As System.Web.ApplicationServices.AuthenticatingEventArgs)
    
        If (e.Username.IndexOf("@contoso.com") >= 0) Then
            e.Authenticated = Membership.Providers("ContosoSqlProvider").ValidateUser(e.Username, e.Password)
        ElseIf (e.Username.IndexOf("@fabrikam.com") >= 0) Then
            e.Authenticated = Membership.Providers("FabrikamSqlProvider").ValidateUser(e.Username, e.Password)
        Else
            e.Authenticated = Membership.Provider.ValidateUser(e.Username, e.Password)
        End If
        e.AuthenticationIsComplete = True
    End Sub
    
    void AuthenticationService_Authenticating(object sender, System.Web.ApplicationServices.AuthenticatingEventArgs e)
    {
        if (e.UserName.IndexOf("@contoso.com") >= 0)
        {
            e.Authenticated = Membership.Providers["ContosoSqlProvider"].ValidateUser(e.UserName, e.Password);
        }
        else if (e.UserName.IndexOf("@fabrikam.com") >= 0)
        {
            e.Authenticated = Membership.Providers["FabrikamSqlProvider"].ValidateUser(e.UserName, e.Password);
        }
        else
        {
            e.Authenticated = Membership.Provider.ValidateUser(e.UserName, e.Password);
        }
        e.AuthenticationIsComplete = true;
    }
    
  3. Binden Sie in der Application_Start-Methode der Datei Global.asax den Ereignishandler für das Authenticating-Ereignis ein.

    Das folgende Beispiel veranschaulicht die Bindung eines Handlers an das Authenticating-Ereignis.

    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
        AddHandler System.Web.ApplicationServices.AuthenticationService.Authenticating, _
          AddressOf Me.AuthenticationService_Authenticating
    End Sub
    
    void Application_Start(object sender, EventArgs e)
    {
        System.Web.ApplicationServices.AuthenticationService.Authenticating +=
            new EventHandler<System.Web.ApplicationServices.AuthenticatingEventArgs>(AuthenticationService_Authenticating);
    }
    
  4. Rufen Sie den Authentifizierungsdienst in einer Anwendung auf, die eine SOAP 1.1-Nachricht lesen und verarbeiten kann.

Kompilieren des Codes

Sie müssen den Authentifizierungsdienst auf einem Webserver einrichten, damit die vorherigen Beispiele funktionieren. Weitere Informationen finden Sie unter Gewusst wie: Aktivieren des WCF-Authentifizierungsdiensts.

Sicherheit

Greifen Sie immer unter Verwendung von SSL (Secure Sockets Layer) und HTTPS auf den Authentifizierungsdienst zu.

Siehe auch

Konzepte

Übersicht über den Windows Communication Foundation-Authentifizierungsdienst

Referenz

AuthenticationService

AuthenticatingEventArgs

Weitere Ressourcen

Verwalten von Benutzern durch Mitgliedschaft