DevTrain

Autor: Rene Paschold

Wer darf rein und wer nicht

Sie möchten Ihre Webseiten mit einem Usernamen und Passwort schützen? Sie wollen bestimmte Bereiche Ihrer Homepage nur bestimmten Usern zugänglich machen? Dann sind Sie bei Form Authentication genau richtig.

 

Mit ASP.NET haben Sie sehr einfach die Möglichkeit gewisse Bereiche Ihrer Homepage zu schützen. Die meist verwendeten Authentifizierungen sind: Forms, Windows und Passport.

 

Formularbasierende Authentifizierung

Mit der formularbasierenden Authentifizierung haben Sie die Möglichkeit eigene Benutzeroberflächen zu Anmeldung bereit zu stellen. Hierbei handelt es sich um einen ASP.NET Authentifizierungsdienst, der von Ihnen programmierte Anmeldeprüfungen vornehmen kann! Wird zu 90% im Web verwendet.

 

Windowsbasierende Authentifizierung

Hier wird anhand des NTFS Dateisystem der User authentifiziert. Will man diese Form der Authentifizierung verwenden, muss auch der IIS konfiguriert werden. Der anonyme User des entsprechenden WebProjektes muss deaktiviert werden.

 

Passport

Jeder kennt Microsoft Passport. Wird Ihre Webseite über Passport geschützt so muss der User ein entsprechendes Konto bei Microsoft haben. D.h. aber auch das jeder der ein Passport Konto besitzt sich auch auf Ihre Webseite einloggen kann. Außerdem ist dieser Dienst nicht kostenlos.

 

Kombinierte Authentifizierung

Es ist auch möglich erst eine Windows Authentifizierung und dann eine Forms Authentifizierung zu durchzuführen. Das erfolgt in zwei Schritten: 1. Anmeldung per Windows, 2. Anmeldung per Forms.

 

Wir beschäftigen uns in diesem Artikel mit der formularbasierenden Authentifizierung da diese, wie schon angesprochen die meinst verwendetste Art ist. Sie können anhand dieser Authentifizierung auf User prüfen die in einer Datenbank, einer Text-Datei, einem XML File oder in der web.config gespeichert sind.

 

Wenn Sie Ihre Webseite mit einem Schutz versehen wollen müssen Sie entsprechende Änderungen an der web.config vornehmen!

 

 

web.config 

<authorization>

   <deny users="?" />

</authorization>

           

<authentication mode="Forms">

   <forms name=".AUTHCOOKIE" protection="All" timeout="60" loginUrl="login.aspx">

      <credentials passwordFormat="MD5">

         <user name="Rene" password="2C115C6446B25333427334CBE6415DC2" />

      </credentials>

   </forms>

</authentication>  

 

Im authorization Block legen Sie fest welche Art von User Zugriff auf Ihr Web haben. Das ? steht für anonymen Zugriff auf die Webseite. In Verbindung mit deny ist also der anonyme Zugriff verboten.

 

Mittels authentication können Sie die Art der Authentifizierung festlegen. Wir verwenden in unserem Beispiel Forms.

 

Des Weiteren legen Sie fest wie das Cookie heißen soll, welcher Bereich geschützt werden soll, wie lange diese Anmeldung gültig ist und wie die entsprechende Seite mit dem login Formular heißt. ASP.NET leitet den User automatisch auf die login.aspx wenn der User nicht erkannt wurde.

 

Der Bereich credentials ist nur dann notwendig wenn Ihre Benutzer nicht aus einer Datenbank oder anderen Datenquelle kommen. Mit dem jetzigen Beispiel sind Sie leider auch sehr unflexibel da Sie immer per Hand einen User hinzufügen oder löschen müssen. Allerdings reicht diese Art völlig aus wenn es einen festen Benutzerkreis gibt der Zugriff auf Ihre Homepage hat und dieser auch selten verändert wird!

 

 

login.aspx 

<table border="0" cellpadding="2" cellspacing="0">

      <tr>

            <td>Benutzername:</td>

            <td><asp:TextBox ID="txtUserID" Runat="server" Width="170"></asp:TextBox></td>

      </tr>

      <tr>

            <td>Passwort:</td>

            <td><asp:TextBox ID="txtPW" Runat="server" TextMode="Password" Width="170"></asp:TextBox></td>

      </tr>

      <tr>

            <td></td>

            <td><asp:Button ID="btnLogin" Text="Anmelden" Runat="server"></asp:Button></td>

      </tr>

      <tr>

            <td colspan="2"><asp:Label ID="lblMessage" Runat="server"></asp:Label></td>

      </tr>

</table>  

 

Wie Sie sehen eine ganz normale ASPX Seite. Drückt der User jetzt den Button wird folgender Code ausgeführt:

 

 

login.aspx.vb 

Private Sub LoginClick(ByVal sender As Object, ByVal e As EventArgs) Handles btnLogin.Click

   If (System.Web.Security.FormsAuthentication.Authenticate(txtUserID.Text, txtPW.Text)) Then

      ' Logindaten stimmen und User wurde erkannt

      System.Web.Security.FormsAuthentication.RedirectFromLoginPage(txtUserID.Text, False)

   Else

      ' Fehlermeldung

      lblMessage.Text = "Benutzer ist unbekannt! Bitte wiederholen!"

   End If

End Sub  

 

Die Methode Authenticate vergleicht die in der Web.config gespeicherten Daten mit denen die der User eingegeben hat. Stimme diese überein wird True zurückgegeben, ansonsten False. Wenn True zurückgegeben wird dann wir die Methode RedirectFromLoginPage aufgerufen, welche das Cookie speichert und zur ursprünglich angeforderten Seite weiterleitet. Als zweiten Parameter kann man noch festlegen ob das Cookie permanent gespeichert werden soll! Wird bei der Prüfung False zurückgegeben wird eine Fehlermeldung erzeugt.

 

In der Methode LoginClick können Sie natürlich auch Usereingaben mit einer Datenbank, einem XML Dokument oder einer Textdatei prüfen. Wo und wie Sie die User speichern können Sie ganz bequem selber entscheiden.

 

Sicherheitshinweis:

Passwort wird per Klartext übergeben. Wenn wichtige Daten oder Bereich über eine Authentifizierung eingesehen werden können sollte man SSL verwenden.


Erfasst am: 01.04.2004 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=827
© Copyright 2003 ppedv AG - http://www.ppedv.de