thatsIT
thatsIT

Reputation: 2175

Active Directory, LDAP UserPrincipal

Got this information when I wrote out the DistinguishedName property on UserPrincipal class.

CN=Test Testie, OU=123,OU=Company,OU=Accounts,DC=myServer,DC=local

And im woundering if there is a property to get the nr 123 from OU. Is there any other property to get that or is this the best way to filter out my information?

Upvotes: 1

Views: 1056

Answers (2)

thatsIT
thatsIT

Reputation: 2175

Ok, it's working but it doesn't feels like the best practice to do like this:

        var ctx = new PrincipalContext(ContextType.Domain, "myDomain.local");
        var user = UserPrincipal.FindByIdentity(ctx, "myUser");
        var auth = user.GetAuthorizationGroups().Any(x => x.Name.Contains("myGroup"));

Because the thing is that I need to use contains because the group could look like this:

myGroup.xxxx.111

Any better way to soulve this?

Upvotes: 0

Daro
Daro

Reputation: 2010

\No. There is no "Parent" property.

Every object bellow the root has a parent being either an organizational unit (OU=) on a container (CN=). So just parse what is between the first two commas and remove OU= and CN=. That way you have the Name property.

Beware that it is possible to have objects with commas in their names. It then look like this:

Great OU, The

CN=Test Testie,OU=Great OU\,The,OU=Company,OU=Accounts,DC=myServer,DC=local

Testie, Test

CN=Testie\, Test ,OU=123,The,OU=Company,OU=Accounts,DC=myServer,DC=local

So you need to check for a backslah before parsing! If found, you then need to parse, between the first and the third comma.

Here is a link about "special" characters in Distinguished Names.

Upvotes: 2

Related Questions