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
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
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to