Hmm actually could be something else. How does your group ldiff looks like ? Looks like there is a bug with subgroups containing uids instead of complete DNs.
On Mon, Feb 10, 2014 at 9:47 AM, Thomas Mortagne <[email protected]> wrote: > From what I understand from you use case you should not put > "cn=mygroup" but your complete group DN > ("cn=mygroup,cn=groups,dc=mycompany,dc=com=member1"). "cn=mygroup" > does not really mean that group but "everything that matches > "cn=mygroup"" (which is why it list you the group as found member by > the way). There is still a bug in the fact that it seems to not expand > the found groups to find submembers when using partial DN but if you > use complete DN in the configuration you should be fine. > > I will try to reproduce and debug the partial DN use case. Thanks for > the report. > > On Sun, Feb 9, 2014 at 3:16 AM, Eric Kimn <[email protected]> wrote: >> Hey all, >> >> I managed to view the code for this class by a google search. But i’m >> noticing a problem with the getGroupMembers logic and I’m experiencing it >> myself in my 5.4 install of xwiki. >> Some background: I am using Apple’s open directory as my ldap server. >> My ldap config is as such (using the LDAP application): >> >> Restrict to group: >> cn=mygroup >> >> LDAP base dn: >> dc=mycompany,dc=com >> >> LDAP UID Attribute name >> memberUid >> >> >> The symptom: When XWiki tries to locate the members of a group, it finds >> only one, typically the alphabetically first one, and not all. >> >> The source of the problem: >> The entry point is here: >> public Map<String, String> getGroupMembers(String groupDN, XWikiContext >> context) >> >> which calls with a new map of <String, String> for members, this line -> >> boolean isGroup = getGroupMembers(groupDN, members, new ArrayList<String>(), >> context); >> >> That method has this signature -> >> public boolean getGroupMembers(String groupDN, Map<String, String> >> memberMap, List<String> subgroups, XWikiContext context) >> >> which falls to >> if (searchAttributeList != null) { >> isGroup = getGroupMembers(fixedDN, memberMap, subgroups, >> searchAttributeList, context); >> } >> >> But of course there are search attributes, so it calls this-> >> public boolean getGroupMembers(String groupDN, Map<String, String> >> memberMap, List<String> subgroups, List<XWikiLDAPSearchAttribute> >> searchAttributeList, XWikiContext context) >> >> And this is where the problem is: >> It for loops through the search attributes and executes a query, if it gets >> a response that isn’t a group and the member map doesn’t already contain >> that key, it will add it: >> if (!memberMap.containsKey(groupDN)) { >> memberMap.put(groupDN.toLowerCase(), id == null ? "" : >> id.toLowerCase()); >> } >> >> But then it RETURNS isGroup, which is now true, >> And that flows back up the chain, except it never iterates through the rest >> of the entries. >> >> My logs show: >> 2014-02-08 17:45:22,858 >> [http://myserver/xwiki/bin/loginsubmit/XWiki/XWikiLogin] DEBUG >> c.x.x.p.l.XWikiLDAPUtils - Looks like [cn=mygroup] is not a DN, lets >> try filter or id >> 2014-02-08 17:45:22,858 >> [http://myserver/xwiki/bin/loginsubmit/XWiki/XWikiLogin] DEBUG >> c.x.x.p.l.XWikiLDAPConnection - LDAP search: baseDN=[dc=mycompany,dc=com] >> query=[cn=mygroup] attr=[[objectClass, uid, memberuid, memberUid]] >> ldapScope=[2] >> 2014-02-08 17:45:22,864 >> [http://myserver/xwiki/bin/loginsubmit/XWiki/XWikiLogin] DEBUG >> c.x.x.p.l.XWikiLDAPUtils - Found group [cn=mygroup] members >> [{cn=mygroup,cn=groups,dc=mycompany,dc=com=member1}] >> 2014-02-08 17:45:22,864 >> [http://myserver/xwiki/bin/loginsubmit/XWiki/XWikiLogin] DEBUG >> c.x.x.p.l.XWikiLDAPUtils - Found user dn in user group [null] >> 2014-02-08 17:45:22,865 >> [http://myserver/xwiki/bin/loginsubmit/XWiki/XWikiLogin] DEBUG >> u.i.L.XWikiLDAPAuthServiceImpl - Local LDAP authentication failed. >> com.xpn.xwiki.XWikiException: Error number 8001 in 8: LDAP user member2 does >> not belong to LDAP group cn=mygroup. >> >> >> Am I reading the logs or code wrong? If I am, then what am I doing wrong >> with my ldap configuration? I’m clearly part of mygroup but it consistently >> fails to find me. >> >> Best, >> >> >> Eric Kyungsuk Kimn >> 김경석 >> Senior Back End Developer >> [email protected] >> _______________________________________________ >> devs mailing list >> [email protected] >> http://lists.xwiki.org/mailman/listinfo/devs > > > > -- > Thomas Mortagne -- Thomas Mortagne _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

