Gewusst wie: Anpassen der Benutzeranmeldung bei Verwendung des WCF-Authentifizierungsdiensts
Aktualisiert: November 2007
In diesem Thema wird gezeigt, wie benutzerdefinierte Anmeldeinformationen überprüft werden, um Benutzer zu authentifizieren, wenn Sie den ASP.NET-Authentifizierungsdienst unter Verwendung von Windows Communication Foundation (WCF) aufrufen. In der Regel erfordert die Authentifizierung nur einen Benutzernamen und ein Kennwort. In einigen Fällen müssen Sie jedoch möglicherweise die Identität eines Benutzers überprüfen, indem Sie zusätzliche Anmeldeinformationen verwenden, wie zum Beispiel eine Identifikationsnummer.
Sie verwenden die WCF-Implementierung für Authentifizierungsdienste, wenn Sie einen Benutzer von einer Clientanwendung aus anmelden möchten, die SOAP 1.1-Nachrichten senden und empfangen kann, wie z. B. eine Java-Anwendung.
So überprüfen Sie benutzerdefinierte Anmeldeinformationen für die Authentifizierung
Erstellen Sie in der Datei Global.asax der Webanwendung einen Ereignishandler für das Authenticating-Ereignis.
Lesen Sie im Handler den Inhalt der CustomCredential-Eigenschaft des Handlerparameters AuthenticatingEventArgs aus, und authentifizieren Sie dann die Werte.
Das folgende Beispiel zeigt, wie aus der CustomCredential-Eigenschaft zwei Authentifizierungswerte gelesen und an eine benutzerdefinierte Authentifizierungsklasse mit dem Namen StudentAuthentication übergeben werden.
Sub AuthenticationService_Authenticating _ (ByVal sender As Object, _ ByVal e As System.Web.ApplicationServices.AuthenticatingEventArgs) Dim studentid As String = String.Empty Dim answer As String = String.Empty Dim credentials As String() = _ e.CustomCredential.Split(New Char() {","c}) If (credentials.Length > 0) Then studentid = credentials(0) If (credentials.Length > 1) Then answer = credentials(1) End If End If Try e.Authenticated = _ StudentAuthentication.ValidateStudentCredentials _ (e.Username, e.Password, studentid, answer) Catch ex As ArgumentNullException e.Authenticated = False End Try e.AuthenticationIsComplete = True End Sub
void AuthenticationService_Authenticating(object sender, System.Web.ApplicationServices.AuthenticatingEventArgs e) { string studentid = String.Empty; string answer = String.Empty; string[] credentials = e.CustomCredential.Split(new char[] { ',' }); if (credentials.Length > 0) { studentid = credentials[0]; if (credentials.Length > 1) { answer = credentials[1]; } } try { e.Authenticated = StudentAuthentication.ValidateStudentCredentials (e.UserName, e.Password, studentid, answer); } catch (ArgumentNullException ex) { e.Authenticated = false; } e.AuthenticationIsComplete = true; }
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); }
Rufen Sie den Authentifizierungsdienst einer Anwendung auf, die eine SOAP-Nachricht von einem Webdienst verarbeiten kann, und übergeben Sie die zusätzlichen Werte zur Authentifizierung in der CustomCredential-Eigenschaft.
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.
Robuste Programmierung
Die vorherigen Codebeispiele zeigen eine benutzerdefinierte Authentifizierungsklasse, die die ArgumentNullException auslöst, wenn einer der Parameter den Wert null hat. Der Code muss alle Ausnahmen, die während der Überprüfung ausgelöst werden, verarbeiten.
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