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

Re: Still unable to configure glue and rwm overlay correctly



Howard,

Thanks for your response, as a result of checked out the head tag
within CVS, compiled and tested with the same configuration as before.

The glue overlay and rewrite rule now appear to be functioning
correctly when entries retrieved from the directories are rewritten,
the inetOrgPerson entries within the OpenLDAP portion of the unified
directory remain inetOrgPerson entries with all their attributes
(previously attributes referenced by the rewrite overlay were being
removed) and all user entries within the Active Directory portion are
rewritten correctly as inetOrgPerson entries.  There does appear to be
a problem with searching the directory using an attribute that is
being rewritten.

I have to directories being glued together,

	ou=XYZ, dc=xyz, dc=com				Microsoft Active Directory (ldap backend)
	ou=Extranet, ou=XYZ, dc=xyz, dc=com	OpenLDAP bdb (subordinate)

If I retrieve an entry from each directory using the cn attribute and
the base set to "ou=XYZ, dc=xyz, dc=com", I get the two directory
entries correctly rewritten (in the Active Directory case) and
correctly left alone (in the OpenLDAP case):

	extranet:~# ldapsearch -x -D "cn=Manager, ou=Extranet, ou=XYZ,
dc=xyz, dc=com" -W -b "ou=XYZ, dc=xyz, dc=com" "(cn=Andrew Kay)"
	Enter LDAP Password:
	# extended LDIF
	#
	# LDAPv3
	# base <ou=XYZ, dc=xyz, dc=com> with scope subtree
	# filter: (cn=Andrew Kay)
	# requesting: ALL
	#

	# Andrew Kay, Users, XYZ, xyz.com
	dn: cn=Andrew Kay,ou=Users,ou=XYZ,dc=xyz,dc=com
	objectClass: top
	objectClass: person
	objectClass: organizationalPerson
	objectClass: inetOrgPerson
	sn: Kay
	cn: Andrew Kay
	uid: Andrew
	mail: andrew.kay@xyz.com

	# search result
	search: 2
	result: 0 Success

	# numResponses: 2
	# numEntries: 1
	extranet:~# ldapsearch -x -D "cn=Manager, ou=Extranet, ou=XYZ,
dc=xyz, dc=com" -W -b "ou=XYZ, dc=xyz, dc=com" "(cn=John Smith)"
	Enter LDAP Password:
	# extended LDIF
	#
	# LDAPv3
	# base <ou=XYZ, dc=xyz, dc=com> with scope subtree
	# filter: (cn=John Smith)
	# requesting: ALL
	#

	# John Smith, Users, Extranet, XYZ, xyz.com
	dn: cn=John Smith,ou=Users,ou=Extranet,ou=XYZ,dc=xyz,dc=com
	objectClass: inetOrgPerson
	cn: John Smith
	sn: Smith
	uid: john.smith
	userPassword:: am9obi5zbWl0aA==

	# search result
	search: 2
	result: 0 Success

	# numResponses: 2
	# numEntries: 1

In practice I want to use the uid attribute to retrieve the directory entry:

	extranet:~# ldapsearch -x -D "cn=Manager, ou=Extranet, ou=XYZ,
dc=xyz, dc=com" -W -b "ou=XYZ, dc=xyz, dc=com" "(uid=Andrew)"
	Enter LDAP Password:
	# extended LDIF
	#
	# LDAPv3
	# base <ou=XYZ, dc=xyz, dc=com> with scope subtree
	# filter: (uid=Andrew)
	# requesting: ALL
	#

	# Andrew Kay, Users, XYZ, xyz.com
	dn: cn=Andrew Kay,ou=Users,ou=XYZ,dc=xyz,dc=com
	objectClass: top
	objectClass: person
	objectClass: organizationalPerson
	objectClass: inetOrgPerson
	sn: Kay
	cn: Andrew Kay
	uid: Andrew
	mail: andrew.kay@xyz.com

	# search result
	search: 2
	result: 0 Success

	# numResponses: 2
	# numEntries: 1
	extranet:~# ldapsearch -x -D "cn=Manager, ou=Extranet, ou=XYZ,
dc=xyz, dc=com" -W -b "ou=XYZ, dc=xyz, dc=com" "(uid=john.smith)"
	Enter LDAP Password:
	# extended LDIF
	#
	# LDAPv3
	# base <ou=XYZ, dc=xyz, dc=com> with scope subtree
	# filter: (uid=john.smith)
	# requesting: ALL
	#

	# search result
	search: 2
	result: 0 Success

	# numResponses: 1

The query works perfectly against the Active Directory portion of the
unified directory, but doesn't return the user from the OpenLDAP
portion of the directory.  If a rerun the last query but set the base
explicitly to the OpenLDAP portion of the directory:

	extranet:~# ldapsearch -x -D "cn=Manager, ou=Extranet, ou=XYZ,
dc=xyz, dc=com" -W -b "ou=Extranet, ou=XYZ, dc=xyz, dc=com"
"(uid=john.smith)"
	Enter LDAP Password:
	# extended LDIF
	#
	# LDAPv3
	# base <ou=Extranet, ou=XYZ, dc=xyz, dc=com> with scope subtree
	# filter: (uid=john.smith)
	# requesting: ALL
	#

	# John Smith, Users, Extranet, XYZ, xyz.com
	dn: cn=John Smith,ou=Users,ou=Extranet,ou=XYZ,dc=xyz,dc=com
	objectClass: inetOrgPerson
	cn: John Smith
	sn: Smith
	uid: john.smith
	userPassword:: am9obi5zbWl0aA==

	# search result
	search: 2
	result: 0 Success
	
	# numResponses: 2
	# numEntries: 1

I get the user, but unfortunately can't get the user if the base is
set to the unified directory base.

It seems to work correctly if I am dealing with:

	- an attribute that is the same in both directories (cn for example)
	- an attribute that is rewritten (uid works against the Active
Directory portion, although it must be rewritten as SAMAccountName
when performing the underlying query)
	- when I explicitly set the base to the OpenLDAP directory portion
and then perform a query referring to an entry within it

I hope I have explained the problem I'm having in sufficient depth, I
can send you the results of running slapd in "trace, args, filter,
parse" debug mode if you wish.

Thanks again for your help so far.


Andrew