Solved

Active Directory filter syntax....

Posted on 2007-03-26
11
3,988 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
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
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

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

This article is for Object-Oriented Programming (OOP) beginners. An Interface contains declarations of events, indexers, methods and/or properties. Any class which implements the Interface should provide the concrete implementation for each Inter…
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…
You have products, that come in variants and want to set different prices for them? Watch this micro tutorial that describes how to configure prices for Magento super attributes. Assigning simple products to configurable: We assigned simple products…

757 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

21 Experts available now in Live!

Get 1:1 Help Now