Feedback

C# - LDAP - Authentifizieren eines Benutzers in der Domäne

Veröffentlicht von am 21.11.2007
(1 Bewertungen)
Kann ein Benutzer in der Domäne authentifiziert werden?

UPDATE:
Nun wird das Passwort dem Active Directory verschlüsselt übermittelt. Danke an Volker Steitz für den Hinweiß.
GFU-Schulungen  [Anzeige]

ASP.NET 2.0 und 3.5

Dieser Kurs vermittelt Ihnen alle Erweiterungen von Microsoft ASP.NET 2.0. Zu diesen zählen u. a. Data Bindung, Master Pages, und Security.

C# Komplett

Sie kennen sich in objektorientierter Programmierung aus. Sie schreiben C++ oder Java? Und nun stehen Sie vor der Aufgabe, in C# Anwendungen zu erstellen. Das C# Komplett-Seminar verschafft Ihnen umfassende Programmierkenntnisse in dieser Sprache. Nach der Schulung entwickeln Sie selbständig Anwendungen mit C#. Sie kennen die Datentypen und Klassenbibliotheken der objektorientierten Programmiersprache C#. Der Komplettkurs setzt bei den Grundlagen von C# ein. Sie arbeiten mit Variablen und konvertieren Typen. Multithreading, Delegates, Generics sind nach dem Seminar für Sie kein Geheimnis mehr.

using System.Security;
using System.DirectoryServices;
using System.DirectoryServices.ActiveDirectory;

public static bool Authenticate(string domain, string username, string password)
{
    SecureString pwd = new SecureString();
    bool bAuth = false;
    DirectoryEntry entry = null;

    //Durchlaufe das Passwort und hänge es dem SecureString an
    foreach (char c in password)
    {
        pwd.AppendChar(c);
    }

    //Bewirkt, dass das Passwort nicht mehr verändert werden kann
    pwd.MakeReadOnly();

    //Passwort wird einem Pointer übergeben, damit dieser später "entschlüsselt" werden kann
    IntPtr pPwd = System.Runtime.InteropServices.Marshal.SecureStringToBSTR(pwd);            

    try
    {
        entry = new DirectoryEntry(string.Concat(@"LDAP://", domain), username, System.Runtime.InteropServices.Marshal.PtrToStringBSTR(pPwd));
        object nativeObject = entry.NativeObject;
        bAuth = true;
    }
    catch (Exception)
    {
        bAuth = false;
    }
    finally
    {
        entry.Close();
        entry.Dispose();
    }
    return bAuth;
}

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!