Hi Thomas, Ah, thanks for the responses.
However, I tried the full group dn as you suggested and unfortunately it still only finds the first memberUid in the list and so it doesn’t think I am a member of the group. Best, Eric Kyungsuk Kimn 김경석 Senior Back End Developer [email protected] On Feb 10, 2014, at 2:39 AM, Thomas Mortagne <[email protected]> wrote: > 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 _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

