Asp // Gruppe auslesen Secure Seite Nt-auth

virtualsix

Grünschnabel
hi all,

weiß jemand wie ich die Gruppe des Benutzers auslesen kann ?
wie man Benutzer aus der Domain und pass ausliest is ´ned allzuschwer aber die Gruppe ?


benutzername = Request.ServerVariables("AUTH_USER")
kennwort = Request.ServerVariables("AUTH_PASSWORD")
typ = Request.ServerVariables("AUTH_TYPE")
 

René Paschold

Erfahrenes Mitglied
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.

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>