Feedback

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

Veröffentlicht von am 11/21/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ß.
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!