Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

NT Account Management via ASP

Geschrieben von: Christian Holm
Kategorie: Sicherheit

This printed page brought to you by AlphaSierraPapa

Suchen Sie nach einer einfachen Möglichkeit Windows NT/2000 Benutzerkonten mittels ASP zu verwalten? Wenn ja, dann bietet dieser Artikel genau das, wonach Sie suchen. Die heute vorgestellte AspUser Komponente bietet die Möglichkeit Benutzerkonten lokal oder auf einem Remote Server zu managen - natürlich auch Domänenbenutzerkonten. Der heutige Artikel beschreibt die grundlegendsten Funktionen der Komponente - also das Anlegen und Konfigurieren eines Benutzerkontos, sowie dessen Löschung.

Die 30-Tage Evaluierungsversion der AspUser 1.1 Komponente von Persits Software, Inc. können Sie hier kostenlos downloaden. Die Komponente kann per Server oder per Enterprise erworben werden, was sich auch auf den Preis entsprechend auswirkt.

Anlegen eines Benutzerkontos

Die Komponente ist sehr komfortabel und der Programmieraufwand ist gering. Nach der Installation sind eigentlich schon alle Vorbereitungen für die Erstellung einer ASP Account Management Seite getroffen. Beginnen wir also gleich mit der Besprechung des Sourcecodes. Mit dem vorbereiteten Beispielscript können Sie einen neuen Benutzer anlegen und die wichtigsten Optionen für das Konto setzen. Das Script legt den neuen Benutzer am lokalen Server an. Natürlich kann man das Script leicht abändern um neue Benutzer auf einem anderen Server als dem lokalen zu erstellen.

Set AspUser = Server.CreateObject("Persits.AspUser")
AspUser.LogonUser "", "Administrator", "ValidPWDHere"

Zuerst müssen wir uns einloggen um überhaupt ein Konto erstellen zu können. Die Parameterreihenfolge ist DomainName, Benutzer, Paßwort. Wie ich schon erwähnt habe, logge ich mich am lokalen Server ein - daher bleibt auch der Domainname leer.

Bevor ich nun die Eingabewerte der Komponente übergebe, validiere ich die Eingaben gegen die wichtigsten Anforderungen. Hier überprüfe ich ob der Benutzer bereits angelegt wurde:

For Each User In AspUser.LocalUsers
    If Request("Name") = User.Name Then
        Response.Write "User already exists"
        Response.End
    End If
Next

Es folgen Validierungen auf die Gültigkeit des Paßwortes:

If Request("PWD") = "" And Request("CannotChangePwd") = 1 Then
  Response.Write "Settings require to enter a password"
  Response.End
End If

Wenn die Einstellung User Cannot Change Password gesetzt wurde, verlange ich zwingend nach einem Paßwort. Ohne Paßwort habe ich eigentlich nichts auf Windows NT/2000 verloren.

Beherzigen Sie das eben festgestellte - jedem Benutzer sein Paßwort - dann können Sie durch eine strikte Forderung nach einer bestimmten Paßwortlänge den vorigen Code durch diesen ersetzen:

If Len(Request("PWD")) < 8  Then
  Response.Write "Password must have at least 8 chars"
  Response.End
End If

Für den Fall, daß man sich vertippt hat, und das Paßwort mit der Bestätigung nicht übereinstimmt, so wird dies durch folgende Validierung berücksichtigt:

If Request("PWD") <> Request("CPWD") Then
  Response.Write "Password confirmation failed."
  Response.End
End If

Nun übergeben wir die Eingabewerte der Komponente, die daraufhin das Benutzerkonto anlegt:

   Set NewUser = AspUser.AddLocalUser(Request("Name"), Request("PWD"), Request("Description"))

   NewUser.Fullname = Request("Fullname")
   NewUser.MustChangePassword = (Request("MustChangePwd") <> "")
   NewUser.CannotChangePassword = (Request("CannotChangePwd") <> "")
   NewUser.PasswordNeverExpires = (Request("PwdNeverExpires") <> "")
   NewUser.Accountdisabled = (Request("Disabled") <> "")
   NewUser.AddToGroup(Request("MemberOf"))
   NewUser.SetInfo

Nach erfolgreicher Erstellung des neuen Kontos wir ddiese Meldung mit Hinweis auf den Benutzernamen ausgegeben:

    Response.Write "User <b>" & Request("Name") & "</b> added.<hr>"

Da die ASP Seite auf sich selbst einen PostBack tätig, können Sie nun weitere Benutzer eingeben. Der nächste Screenshot zeigt die auf einem Server ausgeführte AddUser.asp Datei mit bereits eingegebenen Daten.

Die Auswahl der Zugehörigkeit zu einer Benutzergruppe erfolgt durch eine Auswahl in der Is member of DropDown Combobox.

Im MMC Snap-In Local Users and Groups finden wir dann auch den neuen Benutzter (hier: "John Doe"):

Der umgekehrte Vorgang zum Hinzufügen ist der des Löschens - und folgt sogleich.

Löschen eines Benutzers

Es soll vorkommen, daß manche Konten nicht mehr gebraucht werden und aus Sicherheitsgründen nicht einfach deaktiviert werden können, sondern gänzlich gelöscht werden müssen. Für diesen Fall ist folgendes ASP-Script zuständig (DeleteUser.asp):

Set AspUser = Server.CreateObject("Persits.AspUser")
AspUser.LogonUser "", "Administrator", "ValidPWDHere"

If Request("Delete") <> "" Then
    AspUser.DeleteLocalUser Request("Users")
End If

Die endgültige Löschung erfolgt durch die DeleteLocalUser Methode und Angabe des Benutzernamens. In diesem Script habe ich auf triviale Weise vermieden, daß die standardmäßig installierten Konten bei der Auswahl angezeigt werden:

<select NAME="Users">
    <option selected>-Select User-</option>
    <%
    For Each User in AspUser.LocalUsers 
        If InStr(User.Comment,"account") = 0 Then
        %>
            <option><%= User.Name %></option>
        <% 
        End If
    Next 
    %>
</select>

Im Browser präsentiert sich dieses Script folgendermaßen:

Schlußbemerkung

Dies war ein schneller Einblick in die AspUser Komponente, der Ihnen die wichtigsten Funktionen für das browserunterstützte Benutzermanagement erklärt hat. Wie gesagt lassen sich mit der Komponente auch Benutzer innerhalb von Domains verwalten. Die Komponente ist einfach zu gebrauchen und verfügt über eine Vielzahl von Einstellungsmöglichkeiten. Aber Achtung - ohne SSL transportiert man wichtige NT Kontendaten ungeschützt über das Netzwerk!

This printed page brought to you by AlphaSierraPapa

Download des Codes

Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20010402.zip

Verwandte Artikel

Dateizugriff auf Netzlaufwerken
http:/www.aspheute.com/artikel/20010508.htm
Impersonation mit ASP.NET
http:/www.aspheute.com/artikel/20020123.htm
Schritt-für-Schritt Debuggen von Sicherheitsproblemen
http:/www.aspheute.com/artikel/20011119.htm
Web-basiertes Dateimanagement mit dem ASP FileMan
http:/www.aspheute.com/artikel/20010507.htm

Links zu anderen Sites

AspUser Komponente
http://www.aspuser.com/

 

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.