3

I need to get users from Active Directory. According to many places include MSDN

https://msdn.microsoft.com/en-us/library/ms677643%28v=vs.85%29.aspx

the correct query is this (&(objectClass=user)(objectCategory=person)).

Unfortunately, I was not able to create the query using Unboundid filters.

I have created the following filters:

Filter categoryFilter = Filter.createEqualityFilter("objectCategory","Person");
Filter objectFilter = Filter.createEqualityFilter("objectClass","user");
Filter searchFilter = Filter.createANDFilter(objectFilter, categoryFilter);

It does not return results. When I looked into objectCategory of LDAP object I have found that it looks like the following:

CN=Person,CN=Schema,CN=Configuration,DC=…,DC=com

Therefore I have changed categoryFilter to the following:

Filter categoryFilter = Filter.createSubstringFilter("objectCategory", null, new String[]{"Person"}, null);

Unfortunately, I still do not get results.

Then I used the categoryFilter with the full objectCategory name:

Filter categoryFilter = Filter.createEqualityFilter("objectCategory","CN=Person,CN=Schema,CN=Configuration,DC=…,DC=com"); 

Only in the last case I get results.

How to make the filter more generic? How to obtain the full objectCategory name from Active Directory?

I need to obtain CN=Person,CN=Schema,CN=Configuration,DC=…,DC=com for any Active Directory while I know that the objectCategory is Person.

Do you know other way to create filters for the query (&(objectClass=user)(objectCategory=person))?

Solution

(not mine therefore do not want to put in the answer)

I have created filter using the following string (sAMAccountType=805306368) and it works perfect:

Filter searchFilter =  Filter.create("(sAMAccountType=805306368)");

Source: http://ldapwiki.com/wiki/Active%20Directory%20User%20Related%20Searches#section-Active+Directory+User+Related+Searches-AllUsers

Michael
  • 10,063
  • 18
  • 65
  • 104

0 Answers0