On Mon, Nov 14, 2011 at 4:45 PM, Howard Chu <[email protected]> wrote: > sim123 wrote: > >> >> >> On Mon, Nov 14, 2011 at 1:37 PM, sim123 <[email protected] >> <mailto:[email protected]>> wrote: >> >> Hi All, >> >> I am playing with access controls on openldap 2.4.26, I have a user >> with >> search access on everything >> >> access to * >> by anonymous auth >> by dn="uid=102,ou=system,dc=**example,dc=com" search >> >> And when I perform search I get nothing >> >> ldapsearch -H "ldap://testldap:389" -D >> "uid=102,ou=system,dc=example,**dc=com" -b >> "ou=users,dc=example,dc=com" -x >> -W '(uid=1)' mail cn dn >> >> Enter LDAP Password: >> # extended LDIF >> # >> # LDAPv3 >> # base <ou=users,dc=example,dc=com> with scope subtree >> # filter: (uid=1) >> # requesting: mail cn dn >> # >> >> # search result >> search: 2 >> result: 0 Success >> >> # numResponses: 1 >> >> so I get a success but no value, is it a valid response? >> > > Yes, it's a valid response. You haven't given Read access to anything, so > no values can be returned. But the search base existed and you had search > access to it, so the search request succeeded. > > > I want to control >> access so that the "uid=102" user can do lookup from given attributes >> but >> can not do (objectClass=*) to get a list of every entry in the ldap. >> >> Thanks for the help >> >> >> Other way of stating my problem is I want to control query filters on the >> server side so the user with "uid=102" can only do query using filter >> (uid=.+) >> , all other filters should be restricted. I tried this regular >> expression but >> getting no such object error. >> > > It seems to me that what you want cannot be done. You need Read access in > order to retrieve any values. Read access includes Search access. So if you > are able to read the value of an attribute, you are allowed to Search for > it as well. >
Thanks for the response, just wondering how can one prevent ldap injections from the server side? In my scenario there will be different systems talking to server and how can I prevent them from getting list of users by doing simple query? I am using uid as login id and this uid is not part of DN (because it can change and I need the DN in different ldap groups), so for normal authentication these systems need to know respective DN from given uid. Thats why I give read privilege to a system account, all anonymous users have auth privilege only. Am I missing something here? Thanks again for the help and support. > > -- > -- Howard Chu > CTO, Symas Corp. http://www.symas.com > Director, Highland Sun http://highlandsun.com/hyc/ > Chief Architect, OpenLDAP > http://www.openldap.org/**project/<http://www.openldap.org/project/> >
