Solved

Active Directory filter syntax....

Posted on 2007-03-26
11
4,003 Views
Last Modified: 2011-09-20
Hi,
I need to get all the objectClass which are = user
and the OU match a variant i compare to.
I wrote:
search.Filter = "(&(objectClass=user)(OU=_VAR))";
but the search result get nothing. (_VAR is a variant in which i pass a string).
What is the right syntax??
Thanks
0
Comment
Question by:udir
  • 5
  • 4
  • 2
11 Comments
 
LVL 15

Expert Comment

by:Colosseo
ID: 18792165
try this instead


search.Filter = "(&(objectClass=user)(OU=" & _VAR & "))";

Scott
0
 
LVL 1

Author Comment

by:udir
ID: 18792244
Hi,
Thanks for the reply.
I forgot to mention - C#,
OK, i wrote -
search.Filter = "(&(objectClass=user)(OU=" + _VAR+ "))";
but i get nothing.
If i put the filter in the LDAP it's OK  -
      DirectoryEntry root = new DirectoryEntry("LDAP://10.1.1.1/OU=" + _VAR + ",DC=Internet,DC=Ladpc",
             "User", "Pass", AuthenticationTypes.ServerBind);

            DirectorySearcher search = new DirectorySearcher(root);
            search.Filter = "(&(objectClass=user))";

Any Idea?
0
 
LVL 15

Expert Comment

by:Colosseo
ID: 18792578
Im not sure you can filter on ou the way you are trying to...

but as you said if you add the ou in to the adspath then its working so you can just use that

Scott
0
 
LVL 1

Author Comment

by:udir
ID: 18792640
My problem is that i need to move the LDAP path to the app.config.
i wrote (at the app.config) :
<activeDirectorySettings defaultServer="Test">
    <servers>
      <clear />
      <add host="10.1.1.1" namingContext="DC=Internet,DC=Ladpc" userName="User" password="Password" name="Test" AuthenticationTypes="ServerBind" />
        </servers>
  </activeDirectorySettings>

And my problem is that i don't know how to pass a variant (_VAR) to the app.config.
If i will succeed doing it in this way, it will solve my problem!!
Can you help with that?   (I mean - pass a variant to app.config - if it is possible)
Thanks
0
 
LVL 15

Expert Comment

by:Colosseo
ID: 18792731
so what does your code snippet look like when it is using the app.config file?

Scott
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 8

Expert Comment

by:Rytmis
ID: 18792741
search.Filter = String.Format("(&(objectClass=user)(dn=*OU={0}*))", _VAR);

This should work, since the OU should be a part of the DN of the object. Remember to set the search scope to Subtree.
0
 
LVL 1

Author Comment

by:udir
ID: 18792861
Rytmis, sorry i steel get nothing.
Colosseo - it looks like that -
        public static string ADconnectionString = ConfigurationManager.AppSettings["Test"];
        DirectoryEntry root = new DirectoryEntry(DataComm.ADconnectionString);
       
 
0
 
LVL 15

Expert Comment

by:Colosseo
ID: 18792981
Rytmis could be on to the solution you need

try adspath instead of dn:

search.Filter = String.Format("(&(objectClass=user)(adspath=*OU={0}*))", _VAR);
0
 
LVL 1

Author Comment

by:udir
ID: 18793161
Sorry guys it just dosn't retrieve anything, (  Thanks for the effort  (:    )
my code is :
--------------------------------------------------------------
            public static string ADconnectionString = ConfigurationManager.AppSettings["Test"];
            DirectoryEntry root = new DirectoryEntry(DataComm.ADconnectionString);
            DirectorySearcher search = new DirectorySearcher(root);
            search.SearchScope = SearchScope.Subtree;
            search.Filter = String.Format("(&(objectClass=user)(ADsPath=*OU={0}*))", _VAR);

            search.PropertiesToLoad.Add("Name");
            search.PropertiesToLoad.Add("ID");

            SearchResult result;
            SearchResultCollection resultCol = search.FindAll();
           
           string[] allUsers = new string[resultCol.Count];
            string[] allID = new string[resultCol.Count];

            if (resultCol != null)
            {
                for(int counter=0; counter < resultCol.Count; counter++)
------------------------------------------------------------------------------------- and so on....
Count allways  = 0 !! , but again, if i put the " OU=_VAR " at the LDAP it's OK.
What else can i do???
0
 
LVL 8

Accepted Solution

by:
Rytmis earned 500 total points
ID: 18793359
The other option is to put the placeholder in your namingContext attribute in the app configuration:
<add host="10.1.1.1" namingContext="OU={0},DC=Internet,DC=Ladpc" userName="User" password="Password" name="Test" AuthenticationTypes="ServerBind" />

and then:

string adConnectionString = String.Format(ConfigurationManager.AppSettings["Test"], _VAR);

(I'm assuming that AppSettings["Test"] returns the connection string as a concatenated string composed from attributes of the app.config element)

This is not the prettiest solution, but it should work. :)

0
 
LVL 1

Author Comment

by:udir
ID: 18794576
Great thanks it works!
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction Hi all and welcome to my first article on Experts Exchange. A while ago, someone asked me if i could do some tutorials on object oriented programming. I decided to do them on C#. Now you may ask me, why's that? Well, one of the re…
Introduction This article shows how to use the open source plupload control to upload multiple images. The images are resized on the client side before uploading and the upload is done in chunks. Background I had to provide a way for user…
In this video I am going to show you how to back up and restore Office 365 mailboxes using CodeTwo Backup for Office 365. Learn more about the tool used in this video here: http://www.codetwo.com/backup-for-office-365/ (http://www.codetwo.com/ba…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

24 Experts available now in Live!

Get 1:1 Help Now