LDAP Get Groups Beginning With - active-directory

I have a situation whereby Active Directory groups are prefixed with a unique code. For instance
12345 Users
12345 Admins
67890 Users
67890 Admins
I'm currently using LDAP to get all groups but I would like to restrict this to only those prefixed with the id.
Effectively get groups beginning with 12345.
How can I achieve this with LDAP?

Using LDAP a filter like:
&(ObjectClass=Group)(cn=12345*))
Will retrieve groups beginning with 12345.
-jim

Related

Ldap query to get users of a group in Active Directory

I'm trying to write a filter to get all the users of a given group in Active Directory.
To that end I have the following query
LDAPSearch("DC=test,DC=myorg,DC=com", "(objectClass=user)", 1, "name")
I'm a bit confused as to where I should give the name of the group on which to base the search on. As far as I know you cannot have two groups in AD with the same name.
In general, user objects have an attribute called memberOf that lists DNs of groups that a user is member of. Therefore you can search with a filter like (&(objectClass=user)(memberOf=<DN of requested group>)).
Please note that due to AD design, user's primary group is not included in memberOf attribute. For most users that group would be Domain Users (unless explicitly changed), but if changed, that group will no longer list in memberOf and this query will not find such user.

How to obtain user accounts from groups within OU?

I am trying to obtain all the user accounts from a particular Oraganizational Unit. I have the base dn, scope and filter as follows:
BASEDN "OU=dc users,DC=example,DC=com"
SCOPE SUBTREE_SCOPE
FILTER "(&(objectclass=user)(objectcategory=person))"
The OU I am searching, consists of sub OU's as well as groups. The problem is I am able to obtain all the user accounts in the sub OU's but
Iam not able to obtain the user accounts in the groups within the OU. Any idea why?
EDIT:
Also if i search a group which consists of sub groups, Iam unable to obtain user accounts in the sub groups as well. Is it not possible to apply sub tree search for groups?
In an LDAP directory server, entries have a type (based on the objectClass attribute). They are groups or users or organizational units... When you search, you are returned the entries that matches your filter. In your example, you are searching for entries of type users, not groups. You can change your filter to return both groups and users, but your code will need to parse the returned entries to detect the type and what to do with them.

LDAP Query to return OU which contains a given user

I need an LDAP query which returns the single OU in an Active Directory which in turn contains a given username (based on the samAccountName). Is that possible using a single LDAP query to an Active Directory?
Example: User with samAccountName abcd1234 is in OU=HR created under the main AD. I need a query returning the OU including its attributes, the only allowed parameter is the username.
This will require two LDAP queries. One to retrieve the DN of the user, then another that queries for the OU/container of the user based on a portion of the user's DN (minus their RDN). There is no way around it (That I'm familiar with anyway).

Why builtin security groups not in the attribute memberOf?

If I query the AD then for some users the attribute memberOf does not contains any builtin groups. The users with the problem are all moved in a separate OU.
The query is simple:
(&(objectClass=person)(uid=xyz))
But the "Active Directory Users and Computers" tool from Microsoft show this members. Where can be the problem? Is this an access right problem?
There is a notion of a Primary group in AD. The default is usually Domain Users.
This is represented on the user object as an attribute called PrimaryGroupID, and 513 is Domain Users.
There can and must be only one primary group, and to remove the current one, you need to first add another group as a member, to then swap with the primary group ID.

Generic ldap nested group implementation

I need to implement nested group membership for generic AD services.
Previously, i was using a specific search-filter ("member:1.2.840.113556.1.4.1941:=") through which using a single search request, i was able to get hold of all group membership through which that user was part of. However, it looks like that search-filter seems to work only for MS AD servers and not for generic AD servers.
So, is anybody aware of any specific search filter which we can send in a search request (applicable to All AD servers), through which i can derive nested group membership via a single search query.
Thanks in advance for your help on this.
"member:1.2.840.113556.1.4.1941" is LDAP_MATCHING_RULE_IN_CHAIN and might very well not be implemented by other LDAP vendors. LDAP Wiki
Edit:
You could do something like this if you want to reurse the groups:
Use the filter:
(&(objectCategory=organizationalPerson)(objectClass=User)(sAMAccountName=YOURUSER)
get "distinguishedName" (this is the user's distinguishedName)
get "memberOf" (this is a collection of distinguishedNames of the groups the user is a member of (minus the primary group in MS Active Directory, which should be "Domain Users"))
Foreach memberOf in the collection: (This is the first level, so there is no need to check if he is there, because he is.)
(&(objectCategory=group)(distinguishedName=THISMEMBEROF))
get "member" (this is a collection of distinguishedNames of group members)
Foreach memberOf in the collection:
This is the second level (the groups within the groups), so first check if the users distinguishedName is present.
(&(objectCategory=group)(distinguishedName=THISMEMBEROF))
get "member" (this is a collection of distinguishedNames of group members)
Foreach memberOf in the collection:
This is the third level (the groups within the groups), so first check if the users distinguishedName is present.
(&(objectCategory=group)(distinguishedName=THISMEMBEROF))
get "member" (this is a collection of distinguishedNames of group members)
etc.

Resources