I wanted to let users log in to our application using their Windows user name or their email address. In order to achieve this aim, I needed to get hold of a UserPrincipal from the user’s email address so I could then test the password they entered was correct. It took quite a lot of searching to find the relevant code, so I thought I’d post the pertinent part here.
PrincipalContext context = new PrincipalContext( ContextType.Domain, Environment.UserDomainName); UserPrincipal user = new UserPrincipal(context); user.EmailAddress = "test@test.com"; // create a principal searcher for running a search operation PrincipalSearcher pS = new PrincipalSearcher(user); // run the query PrincipalSearchResult<Principal> results = pS.FindAll(); foreach (Principal result in results) { // do something useful... }
5 comments:
Thanks!
Saved me time. Thank you.
This saved me a lot of time. Thanks!
This was really bugging me yesterday. Thank you so much!
Thank you!, my "do something useful" was getting the manager name
var dirEntryForUser = result.GetUnderlyingObject() as DirectoryEntry;
if (dirEntryForUser != null)
{
if (dirEntryForUser.Properties["manager"] != null &&
dirEntryForUser.Properties["manager"].Count > 0)
{
string mgrDN = dirEntryForUser.Properties["manager"][0].ToString();
UserPrincipal usermanager = UserPrincipal.FindByIdentity(context,
dentityType.DistinguishedName,
mgrDN);
Debug.Print(usermanager.DisplayName);
}
}
Post a Comment