Laden...

Testen ob User Password Richtig ist

Erstellt von daniel.w vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.451 Views
D
daniel.w Themenstarter:in
10 Beiträge seit 2008
vor 15 Jahren
Testen ob User Password Richtig ist

Ich will testen ob ein Password für den Windows Benutzer was der Benutzer eingegeben hat richtig ist.

über


string entryString = "WinNT://" + Environment.MachineName + ",computer";
DirectoryEntry dirEntry = new DirectoryEntry(entryString);


try
{
         DirectoryEntry user = dirEntry.Children.Find(userName, "user");

Komm ich an den User. Ich will das nun aber ungern über


user.Invoke("ChangePassword", new object[] {

testen. Wie könnte man das noch überprüfen?

Danke
-- Daniel

D
462 Beiträge seit 2005
vor 15 Jahren

Hallo!

Ein Konstruktor von DirectoryEntry nimmt als Parameter Benutzername und Passwort. Vielleicht genügt es zu versuchen so ein DirectoryEntry-Objekt zu erstellen.

LG

799 Beiträge seit 2007
vor 15 Jahren

Leider kann ich dir da nicht helfen und ich weis auch nicht genau was du vor hast, aber bevor du dir ein Sicherheitssystem selbst zusammen bastelst, muss ich Fragen ob .Net Security deinen Ansprüchen nicht von Haus aus genügt.

As a man thinketh in his heart, so he is.

  • Jun Fan
    Es gibt nichts Gutes, außer man tut es.
  • Erich Kästner
    Krawutzi-Kaputzi
  • Kasperl
X
1.177 Beiträge seit 2006
vor 15 Jahren

Huhu,

Ein Konstruktor von DirectoryEntry nimmt als Parameter Benutzername und Passwort. Vielleicht genügt es zu versuchen so ein DirectoryEntry-Objekt zu erstellen.

Erstellen wird nicht gehen, da dies ja auch per Security verboten sein kann.

🙂

Xynratron

Edit: Abfragen sollte reichen.

Herr, schmeiss Hirn vom Himmel - Autsch!

Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.

D
daniel.w Themenstarter:in
10 Beiträge seit 2008
vor 15 Jahren

Was ich vor hab ist den Benutzer einen Windows user definieren zu lassen mit dem später ein Windows Service ausgeführt werden soll. Da diser zugriff auf bestimmte resourcen benötigt, kann der Service nicht als Local System oder änliches laufen.

@Xynratron was meinst du mit Abfragen sollte reichen?

3.511 Beiträge seit 2005
vor 15 Jahren

Man könnte es auch über die Win32 API lösen


    [DllImport("advapi32.dll", SetLastError = true)]
    public static extern bool LogonUser(
        string lpszUsername,
        string lpszDomain,
        string lpszPassword,
        int dwLogonType,
        int dwLogonProvider,
        out IntPtr phToken
        );

    [DllImport("kernel32.dll", SetLastError = true)]
    static extern bool CloseHandle(IntPtr hHandle);

    private void button4_Click(object sender, EventArgs e)
    {
      IntPtr hToken = IntPtr.Zero;
      if (LogonUser("Benutzer", "Domaine", "Kennwort", 2, 0, out hToken))
        Console.WriteLine("OK");
      else
        Console.WriteLine("Nicht OK");
      
      if (hToken != IntPtr.Zero)
        CloseHandle(hToken);
    }

Wichtig dabei ist es, den Handle wieder zu schließen (hToken).

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)