Sunday, May 27, 2018

How to get a value from Active Directory using C# DirectoryEntry Class

Here is a sample C# program to get email id from active directory by username using DirectorySearcher class.
  1. using System.DirectoryServices;
  1. public string GetEmailIdFromActiveDirectory(string userName)
  2. {
  3.  
  4. var emailId = string.Empty;
  5.  
  6. string activeDirectory_LDAP = "LDAP://server";
  7.  
  8. string activeDirectory_User = "ad_username";
  9.  
  10. string activeDirectory_Password = "ad_password";
  11.  
  12. var directoryEntry = new DirectoryEntry(activeDirectory_LDAP, activeDirectory_User, activeDirectory_Password) { AuthenticationType = AuthenticationTypes.Secure };
  13.  
  14. var directorySearcher = new DirectorySearcher(directoryEntry);
  15.  
  16. directorySearcher.Filter = "sAMAccountName=" + userName;
  17.  
  18. directorySearcher.SearchScope = SearchScope.Subtree;
  19.  
  20.  
  21.  
  22. SearchResult searchResult = directorySearcher.FindOne();
  23.  
  24. if (searchResult != null)
  25.  
  26. {
  27.  
  28. emailId = searchResult.GetDirectoryEntry().Properties["email"].Value.ToString();
  29.  
  30. }
  31.  
  32.  
  33.  
  34. return emailId;
  35.  
  36. }

How to get a value from Active Directory using C# PrincipalSearcher Class

Here is a sample C# program to get email id from active directory by username using PrincipalSearcher class.
  1. using System.DirectoryServices.AccountManagement;
  1. public string GetEmailIdFromActiveDirectory(string userName)
  2. {
  3. var emailId = string.Empty;

  4. string activeDirectory_LDAP = "server";
  5. string activeDirectory_User = "ad_username";
  6. string activeDirectory_Password = "ad_password";

  7. PrincipalContext ctx = new PrincipalContext(ContextType.Domain, activeDirectory_LDAP);

  8. bool isCredentialsValid = ctx.ValidateCredentials(activeDirectory_User, activeDirectory_Password);

  9. if (isCredentialsValid)
  10. {
  11. UserPrincipal userPr = new UserPrincipal(ctx);
  12. userPr.SamAccountName = userName;

  13. PrincipalSearcher srchUser = new PrincipalSearcher(userPr);
  14. UserPrincipal foundUsr = srchUser.FindOne() as UserPrincipal;

  15. if (foundUsr != null)
  16. {
  17. emailId = foundUsr.Email;
  18. }
  19. }

  20. return emailId;
  21. }