Unable to find User after specifying a container for PrincipalContext

15,988

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);
Share:
15,988
Sean Anderson
Author by

Sean Anderson

Sr. Software Developer and blockchain enthusiast w/ ~8 years of full-stack experience in JavaScript and C#. Extensive open-source contributions and a part of the MarionetteJS organization. Currently full-time day trader.

Updated on June 16, 2022

Comments

  • Sean Anderson
    Sean Anderson almost 2 years

    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:

    enter image description here

    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.

  • MethodMan
    MethodMan over 11 years
    I hope that I was able to help you to figure out in getting your Answer Sean.. you can also Accept your answer glad I could help O totally forgot about :389 I must have been really tired last night how could I have over looked that..LOL
  • wruckie
    wruckie over 10 years
    But Users is a default container, your answer doesn't specify how to name the container. something like const string Container = @"CN=Interns,DC=Foo,DC=Bar,DC=biz";