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; }
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.