Thomas, Yes, thank you but I understood what LDAP UID attribute name is referring to. in my xwiki.cfg, I set it to uid, just like the page you sent had suggested. I also set teh member fields to be as that page, along with the group_classes. So, actually, my setup isn’t too different from what that page is suggesting.
I’ve removed posixGroup form teh group_classes list as I don’t think that’s the solution i’m looking for. mycompany-group seems like that should have worked. Best, Eric Kyungsuk Kimn 김경석 Senior Back End Developer [email protected] On Feb 10, 2014, at 3:00 AM, Thomas Mortagne <[email protected]> wrote: > I'm surprised that your ldif does not fully look like what > http://platform.xwiki.org/xwiki/bin/view/AdminGuide/LDAPAuthenticationUseCases;jsessionid=620528B27745C914E631257DCF4DDD3A#HAppleOpenDirectoryServer > suggest. > > On Mon, Feb 10, 2014 at 11:59 AM, Thomas Mortagne > <[email protected]> wrote: >> Something else: >> >> "LDAP UID Attribute name" is not related to the member field in a >> group, it's the name of the field in a user that contains the uid. >> >> On Mon, Feb 10, 2014 at 11:56 AM, Thomas Mortagne >> <[email protected]> wrote: >>> Just added built in support for these group class and member field id >>> (http://jira.xwiki.org/browse/XWIKI-10032). Will be part of 5.4.1 too. >>> >>> On Mon, Feb 10, 2014 at 11:49 AM, Thomas Mortagne >>> <[email protected]> wrote: >>>> On Mon, Feb 10, 2014 at 11:44 AM, Eric Kimn <[email protected]> wrote: >>>>> 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. >>>> >>>> What do you mean exactly by "first memberUid in the list" ? Because in >>>> your first mail it was returning the group itself and not at all the >>>> the member of the group. If you did not configured groups class and >>>> member field then it's normal since it think your group is a user. >>>> >>>>> >>>>> 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 >>>> >>>> >>>> >>>> -- >>>> Thomas Mortagne >>> >>> >>> >>> -- >>> 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

