. Thanks for
the report !
On Mon, Feb 10, 2014 at 10:18 AM, Thomas Mortagne
<thomas.mortagne(a)xwiki.com> 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
<thomas.mortagne(a)xwiki.com> 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 <ekimn(a)apple.com> 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
>> ekimn(a)apple.com
>> _______________________________________________
>> devs mailing list
>> devs(a)xwiki.org
>>
http://lists.xwiki.org/mailman/listinfo/devs
>
>
>
> --
> Thomas Mortagne
--
Thomas Mortagne
--
Thomas Mortagne
_______________________________________________
devs mailing list
devs(a)xwiki.org