On Mon, Feb 10, 2014 at 11:38 AM, Thomas Mortagne <[email protected]> wrote: > On Mon, Feb 10, 2014 at 11:26 AM, Eric Kimn <[email protected]> wrote: >> Hi Thomas, >> >> Thanks for the replies~! Really appreciate it. >> >> To answer your questions: >> >> For the group DN, I was watching the logs, and while yes, I could have put >> the full dn in there, it does a check to see if it can find it with the >> group dn alone and if it can’t find it, it then tries to find it with the >> base dn and then the group dn as a filter. So that’s why I just put the >> cn=mygroup in the group name. > > Yes it's supposed to work (and now it does) but using the full group > DN is simply better for performance since it less LDAP requests. > >> >> My group ldif looks like: >> This is the query i run, it’s the same query xwiki is executing when trying >> to if I’m a member of the group: >> ldapsearch -x -h od.mycompany.com -s sub -b dc=mycompany,dc=com cn=mygroup >> attributes objectClass uid memberUid >> >> # extended LDIF >> # >> # LDAPv3 >> # base <dc=mycompany,dc=com> with scope subtree >> # filter: cn=mygroup >> # requesting: attributes objectClass uid memberUid >> # >> >> # mygroup, groups, mycompany.com >> dn: cn=mygroup,cn=groups,dc=mycompany,dc=com >> objectClass: posixGroup >> objectClass: mycompany-group >> objectClass: extensibleObject >> objectClass: top >> memberUid: member1 >> memberUid: member2 >> memberUid: member3 >> memberUid: member4 >> etc…. >> >> >> Finally, I read the jira bug and I’m not totally sure (from the >> description) if that’s the issue I’m seeing. You said that an LDAP subgroup >> is listed as UID it’s not expanded. But the issue I’m running into isn’t >> related to subgroups, it’s that when there are multiple memberUid’s in the >> group, that logic isn’t adding all of them into the member map object, thus >> it incorrectly determines that a person isn’t in a group, if they’re not the >> first in the list. Please correct me if I’m seeing it wrong. > > Actually it is :) > > As I told you in my previous mail "cn=mygroup" does not means your > group, your group is a subgroup of what we call a group in XWiki which > mean either a group DN, a filter or an organization usint. In you case
s/usint/unit/ > the group "cn=mygroup" has a member called > "cn=mygroup,cn=groups,dc=mycompany,dc=com" which was not expanded. > >> >> And doubly finally, if I’m wrong and the issue is fixed (which would >> awesome), when can I get the fix? It’s really holding up using xwiki on a >> broader scale because I can’t get it integrated with our LDAP. > > Again you should be fine with full group DN, did you tested with it ? > 4.5.1 release is planned tomorrow. > >> >> >> >> Best, >> >> >> Eric Kyungsuk Kimn >> 김경석 >> Senior Back End Developer >> [email protected] >> >> >> >> >> >> >> >> On Feb 10, 2014, at 2:04 AM, Thomas Mortagne <[email protected]> >> wrote: >> >>> Created and fixed http://jira.xwiki.org/browse/XWIKI-10031. Thanks for >>> the report ! >>> >>> On Mon, Feb 10, 2014 at 10:18 AM, Thomas Mortagne >>> <[email protected]> wrote: >>>> 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 >>> >>> >>> >>> -- >>> Thomas Mortagne >>> _______________________________________________ >>> devs mailing list >>> [email protected] >>> http://lists.xwiki.org/mailman/listinfo/devs >> >> _______________________________________________ >> 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

