[ vbvlada @ 14.04.2011. 13:33 ] @
Našao sam ovaj kod na ovoj stranici koji treba da proveri da li neki korisnik postoji u Aktivnom direktorijumu.
Slabo znam kako sve ovo funkcioniše, ali čini mi se da mi treba korisnički nalog sa kojim treba prvo da pristupim LDAP serveru, pa tek onda da izvršim pretragu direktorijuma.
Posebno mislim da je problem u podatku "path", nisam siguran kako njega da napravim, da li tu idu ti podaci za pristup ili kako već.

Code:

public bool IsAuthenticated(string domain, string username, string password)
        {
            string domainAndUsername = domain + "\\" + username;
            DirectoryEntry entry = new DirectoryEntry(_path, domainAndUsername, password);
            Object obj = entry.NativeObject;
            DirectorySearcher search = new DirectorySearcher(entry);
            search.Filter = "(SAMAccountName=" + username + ")";
            search.PropertiesToLoad.Add("cn");
            SearchResult result = search.FindOne();
            if (result == null)
                return false;
            _path = result.Path;
            _filterAtribute = result.Properties["cn"][0].ToString();
            return true;
        }


Exception koji dobijem je "unknown username or bad password", a unosim tačne podatke.

Može li neko da objasni kako sve ovo funkcioniše, pa da vidm gde je problem?
[ deerbeer @ 14.04.2011. 14:09 ] @
Ako ti je masina u domenu i sve radi preko win-authentication stavi sve parametre da budu null
Code:

DirectoryEntry de = new DirectoryEntry(null, null, null, AuthenticationTypes.Secure);

 // ako je username npr. "domain\user"; . onda u LDAP upitu uzimas samo sto ostane od backslash-a 

string UserName = "user" ; 

DirectorySearcher deSearch = new DirectorySearcher();

deSearch.SearchRoot = de;
deSearch.Filter = "(&(objectClass=user)(sAMAccountName=" + UserName + "))";
deSearch.SearchScope = SearchScope.Subtree;

SearchResult results = deSearch.FindOne();

if (results != null)
{
   //user pronadjen 
   de = new DirectoryEntry(results.Path, null, null, AuthenticationTypes.Secure);
   String strDisplayName = de.Properties["name"].Value.ToString()); 

}



[ vbvlada @ 14.04.2011. 19:49 ] @
Ja se izvinjavam, tek sam posle uvideo da ovo što sam radio i nije baš klasična pretraga LDAP-a.
Krenuo sam sa Novell-ovom bibliotekom koja mi se čini prilično jednostavnija i slična je u pretragama koje se koriste u PHP-u i ostalim jezicima.
Da li je neko možda koristio ovo?

Konektovao sam se na LDAP, sada izgleda da imam samo problem oko postavljanja pretrage da traži user-a, a ne neki drugi objekat u stablu...