[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: ldap (openldap) dynamic subtree combination for responses



vlad florentino wrote:
> LDAP Server: OpenLDAP 2.4.24
> 
> Linux Distro: Fedora 15
> 
> (I believe this question is generally about returning properties in
> subentries, when performing searches on a parent entry, in a way that's

You mean "child entries" not "subentries".

> transparent to clients making the requests. However, I have worded my question
> to be based on my specific usecase.)
> 
> ------------------------------------------------------------------------------
> 
> Hi,
> 
> I have successfully configure the Linux sssd service to fetch user loging
> information from an LDAP directory service (which happens to be in the same
> machine). The file to configure for this lives at /etc/sssd/sssd.conf
> 
> I have tested that I can create a linux user account in the LDAP directory, by
> creating an entry under the relevant DN. That node includes the objectClass
> 'posixAccount'.
> 
> |ou=people
>    |
>    - uid=1000 # This entry has the objectClass 'posixAccount'
> |
> 
> performing a:
> 
> |getent passwd | grep the-ldap-based-linux-username
> |
> 
> yields correct information.
> 
> Now, for my problem:
> 
> I'm trying to configure the LDAP directory such that credentials information
> is not duplicated. I would like to define the entries like so:
> 
> |ou=people
>    |
>    - uid=1000 # No possixAccount objectClass
>      |
>      + cn=contact-info # contact stuff ...
>      - cn=account      # contains subtrees for account related stuff.
>        |
>        - cn=credentials     # Fields: uid, userPassword, uidNumber, gidNumber
>        - cn=linux-account   # Fields: homeDirectory, loginShell, ...
>        - cn=windows-account # Fields: winHomeDirectory, sambaServerUrl, ...
>        - cn=samba-account   # Fields: space-quota, ...
> |
> 
> The point of what I'm trying to accomplish is that when ldap clients, such as
> the Linux sssd deamon, perform an account info search/fetch, they do so at the
> following node (not at it's subnodes):
> 
> | cn=account,uid=1000,ou=people
> |
> 
> And that, somehow, the OpenLDAP server would know to combine the info
> contained in the relevant subentries of cn=account, and return those to the
> client, as if those extries existed at cn=account.
> 
> This would work, of course, if I were to place all the info at the cn=account
> node. But, that's what I'm trying to avoid.
> 
> I've try a few things, which have all been unsuccessful.
> 
> Is it possible to do this with OpenLDAP (or LDAP in general)? If so, how?

That is not a feature of LDAP. Nor is this a typical usage. Why are you
partitioning the data like this, it looks like you're thinking of SQL. All of
the account info should simply be in the single entry.

> Regards,
> 
> Vlad
> 
> ------------------------------------------------------------------------------
> 
> PS:
> 
> A trick that I've found useful, and which can help in the final solution to
> the problem, is that the sssd deamon allows one to configure the name of the
> 'posixAccount'-like objectClass that it should use to locate account info. I
> noticed that I can tell it do look for a certain class, say c-linux-account,
> which I then define as an empty auxilary class. The daemon will successfully
> find entries, which contain this class. Then, if those entries contain
> properties named uid, userPassword, homeDirectory, etc, it will use those
> properties for their values. So, I can add that property to cn=account, and
> the deamon will find that entry correctly. I just now have to tell OpenLDAP to
> combine the entries below that node, and return them in the query.
> 


-- 
  -- Howard Chu
  CTO, Symas Corp.           http://www.symas.com
  Director, Highland Sun     http://highlandsun.com/hyc/
  Chief Architect, OpenLDAP  http://www.openldap.org/project/