Načítanie údajov o užívateľovi z Active Directory

Publikoval Michal Kočí dňa 16.12.2005 o 22:52 v kategórii .Net

Ak potrebujete načítať nejaké údaje o užívateľovi z Active Directory (AD) ako napríklad emailovú adresu, tak je to metóda na pár riadkov. A to vďaka assembly System.DirectoryServices.Dll ktorá je štandardnou súčasťou .Net Frameworku...

Celý postup pozostáva zo sledu troch krokov. Nezabudnite, že používané objekty sú inštancie tried z názvového priestoru System.DirectoryServices ktorý sa nachádza v assembly System.DirectoryServices.Dll ktorú si musíte referencovať.

Prvým krokom je vytvorenie si inštancie triedy DirectoryEntry na koreň AD. Ak LDAP cestu k AD neviete, môžete si ju zistiť vytvorením inštancie DirectoryEntry kde ako LDAP cestu uvediete LDAP://rootDSE a nasledovným načítaním jej vlastnosti defaultNamingContext.

DirectoryEntry entryRoot = new DirectoryEntry("LDAP://rootDSE");
String ldapPath = "LDAP://" + entryRoot.Properties["defaultNamingContext"].Value.ToString();
DirectoryEntry entryHome = new DirectoryEntry(ldapPath);

Druhým krokom je vyhľadanie užívateľa v AD. Vyhľadávať môžeme vďaka triede DirectorySearcher. Vytvoríme si jej inštanciu, nastavíme jej že má hľadať v celom strome a že má hľadať podľa užívateľského mena (nie loginu; ak by sme chceli hľadať podľa loginu, musíme zmeniť filtrovaciu podmienku a prehľadávať vlastnosť sAMAccountName namiesto vlastnosti cn).

DirectorySearcher search = new DirectorySearcher(entryHome);
search.SearchScope = SearchScope.Subtree;
search.Filter = "(&(objectCategory=user)(objectClass=person)(cn=" + userName + "))";        
SearchResult result = search.FindOne();
DirectoryEntry entryUser = result.GetDirectoryEntry();

Posledným krokom je načítanie užívateľovej emailovej adresy z inštancie triedy DirectoryEntry - ak ju má v AD zadanú. Ak nie, výsledkom volania metódy bude prázdny reťazec.

if(entryUser.Properties["mail"].Value != null)
{
    return entryUser.Properties["mail"].Value.ToString();
}
else
{
    return string.Empty;
}

Mohlo by ťa tiež zaujímať

Páčil sa ti príspevok?

Zdieľaj príspevok alebo si ho odlož na neskôr

Sleduj ma

Ak nechceš premeškať príspevky ako je tento, sleduj ma na Twitteri, alebo ak máš RSS čítačku, môžeš sledovať môj RSS kanál.