I'm attempting to find a User by username in Active Directory.
This works:
const string Domain = "SLO1.Foo.Bar.biz";
const string Username = "sanderso";
PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, Domain);
UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(principalContext, Username);
This does not:
const string Domain = "SLO1.Foo.Bar.biz";
const string Container = "CN=Users,DC=SLO1,DC=Foo,DC=Bar,DC=biz";
const string Username = "sanderso";
PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, Domain, Container);
UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(principalContext, Username);
I receive the error message:
There is no such object on the server.
here's a screenshot of my ActiveDirectory setup:
I've also tried using the following Container:
const string Container = "OU=Users,DC=SLO1,DC=Foo,DC=Bar,DC=biz";
this was equally unsuccessful.
How can I specify my container while accessing the 'Users' container? I'm trying to do this as an initial, simple setup before introducing a lookup with more complicated requirements. So, I'd rather not settle for the simple solution because I am going to have to troubleshoot this anyway, I believe.
I figured it out :)
First, I used the following software to ensure that I was generating the proper container string:
http://www.ldapbrowser.com/download.htm
This confirmed that my string was pretty much correct, aside from missing a port, but it just needed some fussing.
The correct usage is:
const string Domain = "SLO1.Foo.Bar.biz:389";
const string Container = @"DC=Foo,DC=Bar,DC=biz";
const string Username = @"sanderso";
PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, Domain, Container);
UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(principalContext, username);