It would probably be a lot easier on IRC :)

See http://dev.xwiki.org/xwiki/bin/view/Community/IRC (my id is tmortagne).

On Mon, Feb 10, 2014 at 12:01 PM, Eric Kimn <[email protected]> wrote:
> Well
> I had actually configured a groups class for mycompany-group in xwiki.cfg.  I 
> also tried adding posixGroup to that list and xwiki wasn’t able to find me in 
> the group.
>
> What I mean by first memberUid in the list is:
> The group contains n-number of memberUid attributes, one for each member.  
> The code as i saw in LdapUtils seems to not iterate over the list of all 
> memberUid entries.  Instead it seemed to put only one entry into the member 
> map.
>
> Best,
>
>
> Eric Kyungsuk Kimn
> 김경석
> Senior Back End Developer
> [email protected]
>
>
>
>
>
>
>
> On Feb 10, 2014, at 2: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
>> _______________________________________________
>> 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
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to