ejabberd - Comments for "Windows AD mapping groups (previously used Openfire)" https://www.ejabberd.im/node/4826 en I attempted the patch listed https://www.ejabberd.im/node/4826#comment-57598 <p>I attempted the patch listed in <noindex><a href="https://support.process-one.net/browse/EJAB-1480" title="https://support.process-one.net/browse/EJAB-1480" rel="nofollow" >https://support.process-one.net/browse/EJAB-1480</a></noindex> which I copied from the mod_shared_roster_ldap bug and suggested fix; didn't work as expected.</p> <p>I'm not sure if this is a good place for you to start or not, perhaps it will shed some light. I personally do not follow this code as well as other languages.</p> Fri, 15 Jul 2011 16:50:40 +0000 mengesb comment 57598 at https://www.ejabberd.im By the way, you said you https://www.ejabberd.im/node/4826#comment-57596 <p>By the way, you said you create some special groups to hold the jabber users. They are named like "Jabber-blah-blah-blah". And you miss the flexibility of Openfire which lets you mark some groups for inclusion to the shared roster.</p> <p>You could do this trick to do this (almost) as much easy in ejabberd: create a special group (say, it would be <code>&quot;CN=jab,OU=something,DC=example,DC=com&quot;)</code>, and then make each group you want to appear in your shared roster to be member of this group. Then, you could specify your Roster Filter like this: <code>(&amp;(objectClass=group)(memberOf=CN=jab,OU=something,DC=example,DC=com))</code>.</p> <p>Though it will not let you overcome the problems with user names, and will not allow for traversing the subgroups for users, it will still let you manage groups using the AD Users and Computers tool, doesn't require a special prefix, and doesn't need many dedicated groups just for one purpose (and they can be anywhere below your root dn, no need to gather them in one OU).</p> Thu, 14 Jul 2011 06:12:22 +0000 mikekaganski comment 57596 at https://www.ejabberd.im mikekaganski wrote: I have https://www.ejabberd.im/node/4826#comment-57595 <div class="quote-msg"> <div class="quote-author"><em>mikekaganski</em> wrote:</div> <p>I have explained the cause of this defficiency (I mean why can't you use sAMAccountName), as well as a way to fix this deficiency, in my <noindex><a href="https://support.process-one.net/browse/EJAB-1480" rel="nofollow" >post to process one's bug list</a></noindex>.</p> <p>I'm going to make a patch implementing this approach. I will need someone to help me test it.<br /> However, you could choose to use another approach (one that I have chosen a while ago - i.e. to store the Jabber Group data inside the User object in some field).</p></div> <p>I'm in a situation where I can help you test since our jabber domain is on another product for the time being. I know the cause has been outlined in a few posts; I also wonder if your bug isn't also the one listed in the msrl maintainer's bug: <noindex><a href="https://alioth.debian.org/tracker/index.php?func=detail&amp;aid=312703" title="https://alioth.debian.org/tracker/index.php?func=detail&amp;aid=312703" rel="nofollow" >https://alioth.debian.org/tracker/index.php?func=detail&amp;aid=312703</a></noindex></p> <p>I'll read those posts and see what I can get back to. I've also been informed I have access to an erlang programmer; hopefully they can also be of assistance.</p> Wed, 13 Jul 2011 22:36:38 +0000 mengesb comment 57595 at https://www.ejabberd.im I have explained the cause of https://www.ejabberd.im/node/4826#comment-57594 <p>I have explained the cause of this defficiency (I mean why can't you use sAMAccountName), as well as a way to fix this deficiency, in my <noindex><a href="https://support.process-one.net/browse/EJAB-1480" rel="nofollow" >post to process one's bug list</a></noindex>.</p> <p>I'm a little lost in what do you want to understand: either why can't you use the sAMAccountName, or why the user part of the jid can't be taken from the CN.<br /> And to answer the last part, you need to understand what your jids look like. I suppose that in your LDAP auth config, they are defined to be like "sAMAccountName@example.com". The <noindex><a href="http://tools.ietf.org/html/rfc6122" rel="nofollow" >XMPP standard</a></noindex> applies restrictions to the jid structure, so the localpart (in our case, user part) can't contain the spaces. And the process that happens in the mod_shared_roster_ldap must yield the jids that sorrespond to those jids that the auth module expects.</p> <p>I'm going to make a patch implementing this approach. I will need someone to help me test it.<br /> However, you could choose to use another approach (one that I have chosen a while ago - i.e. to store the Jabber Group data inside the User object in some field).</p> Wed, 13 Jul 2011 22:36:33 +0000 mikekaganski comment 57594 at https://www.ejabberd.im mikekaganski wrote: That's https://www.ejabberd.im/node/4826#comment-57593 <div class="quote-msg"> <div class="quote-author"><em>mikekaganski</em> wrote:</div> <p>That's the most trouble, because the "member" stores its members as DNs, thus if you have your users like "CN=John Doe,OU=blah,OU=blah,DC=example,DC=com", then we're stuck. In the better case when you have CNs of your users without spaces, you may choose to use ldap_memberattr_format_re = "CN=(\\w*),(OU=.*,)*DC=example,DC=com" (this is from the guide, I didn't test this regex). </p></div> <p>the CN=(\\w*) indeed matches single word only, I've tried opening that up to [^,]* (shows the same as \\w*), or .* (which shows NOTHING?? Why?); still not getting the regex match that I would anticipate, unless %u can be filtered in there, but I'm guessing that %u contains the JID portion before the domain name... thus it would match on only the members with one name, firstName (and it does).</p> <p>Indeed, you are correct that the members are stored like DNs:</p> <div class="codeblock"><code>member: CN=firstName sn,OU=blah,OU=blaaaah,OU=more blaaaaaaaah,OU=Company,DC=example,DC=com</code></div> <p>So pardon me... since I'm still a little confused with the whole attributes and filters process, but why can't the JID be different from the member list? sAMAccountName is definitely the JID (and is similar for Openfire), but why can't it match CN=displayName ? It looks like I'd have to dive into the source code... and not being a erlang programmer means lots of brain hurt ... but it appears this is the only way.</p> <p>A sysadmin hack would be to pull the AD into an openLDAP server, and bend it to my will... oh joy (so hacky).</p> <p>Thank you for the explanations, this was very helpful. Not sure if there's anything else that can be helpful here... I can't believe that this is unresolvable and that all of ProcessOne's customers don't use a Windows AD. Sadness...</p> Wed, 13 Jul 2011 16:12:22 +0000 mengesb comment 57593 at https://www.ejabberd.im What you describe is quite https://www.ejabberd.im/node/4826#comment-57592 <p>What you describe is quite easy... until you get to the user jids.</p> <p>1. The Roster Filter should be like (&amp;(objectClass=group)(cn=Jabber-*)), and Group Filter should be like (&amp;(objectClass=group)(cn=%g)). Here the spaces are OK. The ldap_groupattr should stay as it is by default (= "cn") (otherwise you will get troubles constructing the User Filter), ldap_groupdesc may be the default (=ldap_groupattr) or you may choose some other attribute of the group where you will store its pretty name (without Jabber- part). The ldap_memberattr must be "member", because that's the only field where the members may be found. That's the most trouble, because the "member" stores its members as DNs, thus if you have your users like "CN=John Doe,OU=blah,OU=blah,DC=example,DC=com", then we're stuck. In the better case when you have CNs of your users without spaces, you may choose to use ldap_memberattr_format_re = "CN=(\\w*),(OU=.*,)*DC=example,DC=com" (this is from the guide, I didn't test this regex).</p> <p>2. The User Filter must be like "(&amp;(objectCategory=user)(cn=%u)(memberOf=CN=%g,OU=Jabber,OU=Company,DC=example,DC=com)". After the ejabber gets all the data in the 1st stage (i.e. the list of groups, its names and their members), it will generate one query per group and in each query will substitute the "%g" with the ldap_groupattr of the current group (and that's the group's cn, as we put in the 1st stage). The ldap_userdesc should be something you choose to represent the user (like "displayName"), and the ldap_useruid should stay "cn", thus it will match the data that is taken by applying ldap_memberattr_format_re to the ldap_memberattr.</p> <p>That's what I would start with first.</p> Wed, 13 Jul 2011 01:00:41 +0000 mikekaganski comment 57592 at https://www.ejabberd.im So, with the two queries https://www.ejabberd.im/node/4826#comment-57591 <p>So, with the two queries above... and injected into the config, what I really need are the rest of the settings required to show the right stuff for the filters. I've lost track of and am horribly confused with the ldap_(r|g|u)filter stuff now... ugh</p> Tue, 12 Jul 2011 20:02:17 +0000 mengesb comment 57591 at https://www.ejabberd.im mikekaganski wrote: Note that https://www.ejabberd.im/node/4826#comment-57590 <div class="quote-msg"> <div class="quote-author"><em>mikekaganski</em> wrote:</div> <p>Note that it's not possible to get users that are referenced in a group indirectly (i.e. a user is memger of a group, that is a member of our group).</p></div> <p>This is really where openfire and ejabberd separate and makes ejabberd just that much more difficult. Openfire browses the AD already, and looks for groups - map a name to the group and mark it publicly shared (thus, creating a roster). Updates to that group means updates to the roster automagically; hence why we chose it initially.</p> <p>It sounds like a better approach in my case, but it also sounds like a more difficult thing to succeed with, because I'd have to create a new module (which, by the way sounds REALLY good... if there are any developers out there). Maybe you can help me a little more. I'm going to yank my ldapsearch syntax for my matching, and see if you can help me out with the rules to map; or if anyone can help me with the rules to map.</p> <p>This query returns the groups I need:</p> <div class="codeblock"><code>ldapsearch -b ou=Company,dc=example,dc=com -v -W -h dc-XXX-XXX -D cn=MYUSER,dc=example,dc=com -Y DIGEST-MD5 &#039;(&amp;(objectClass=group)(cn=Jabber-*))&#039;</code></div> <p>This query returns the users I want (based on the groups... this is majorly hairy:</p> <div class="codeblock"><code>ldapsearch -b ou=Company,dc=example,dc=com -v -W -h dc-XXX-XXX -D cn=MYUSER,dc=example,dc=com -Y DIGEST-MD5 &#039;(&amp;(objectCategory=user)(|(memberOf=CN=Jabber-Department,OU=Jabber,OU=Company,DC=example,DC=com)(memberOf=CN=Jabber-Department Two,OU=Jabber,OU=Jabber,OU=Company,DC=example,DC=com)(...)))&#039;</code></div> <p>You get the idea... and yes this filter is VERY long, but hey, this feeds me only the users in these groups (what I want). Do note that the 'CN' of the groups listed may have spaces... ldapsearch handles these fine because of the encapsulated single quote and matches the CN object.</p> <p>Is there a way to get this to work? I need the roster to show the CN's for the users, and you know... it can display Jabber-BLAH for each group... I don't care, but they need to show the users under the groups in that style. I can then work on changing the displayed group name later.</p> <p>Any help?</p> <p>---</p> <p>You know... looking at the above, it sounds more worthwhile for me to start looking into developing a 'group based' ldap selection. I've never coded erlang, but maybe I should give it a stab using mod_shared_roster_ldap as a base.</p> Tue, 12 Jul 2011 20:00:32 +0000 mengesb comment 57590 at https://www.ejabberd.im mengesb wrote: ... member has https://www.ejabberd.im/node/4826#comment-57589 <div class="quote-msg"> <div class="quote-author"><em>mengesb</em> wrote:</div> <p>... member has spaces, usually a 'firstName sn' format, with a matching OU=... blah blah blah how ever deep the OU goes...</p></div> <p>Oh I missed that part... That's exactly the point I tried to bring the maintainer's attention for quite some time. Today I posted a message concerning this again. Possibly I need to either open the case on the mod's development page (<noindex><a href="http://ejabberd-msrl.alioth.debian.org" title="http://ejabberd-msrl.alioth.debian.org" rel="nofollow" >http://ejabberd-msrl.alioth.debian.org</a></noindex>), or open it on the process-one site, taking into account that this module is now part of the distribution (<noindex><a href="https://support.process-one.net/browse/EJAB/fixforversion/10796" title="https://support.process-one.net/browse/EJAB/fixforversion/10796" rel="nofollow" >https://support.process-one.net/browse/EJAB/fixforversion/10796</a></noindex>).</p> Tue, 12 Jul 2011 09:42:14 +0000 mikekaganski comment 57589 at https://www.ejabberd.im I think that you are lucky https://www.ejabberd.im/node/4826#comment-57587 <p>I think that you are lucky that you have your CN part of users to match the user part of the jid. I, for instance, have mine as "CN=Mike Kaganski,OU=....,DC=example,DC=com" (note the space between Mike and Kaganski). On my side, I would need to ask LDAP for one additional attribute, in my case it would be sAMAccountName.</p> <p>I suppose that what you need is proper ldap_memberattr_format_re. You may look at its description in the operation guide, but I must say that I haven't used it.</p> <p>What to the single attribute to filter both on users and groups - no, if I understand you correctly. You should carefully check <noindex><a href="http://www.process-one.net/docs/ejabberd/guide_en.html#msrlconfigroster" title="http://www.process-one.net/docs/ejabberd/guide_en.html#msrlconfigroster" rel="nofollow" >http://www.process-one.net/docs/ejabberd/guide_en.html#msrlconfigroster</a></noindex>. The algorithm that is described there may shed some light.</p> <p>Note that it's not possible to get users that are referenced in a group indirectly (i.e. a user is memger of a group, that is a member of our group).</p> Tue, 12 Jul 2011 00:11:49 +0000 mikekaganski comment 57587 at https://www.ejabberd.im mikekaganski https://www.ejabberd.im/node/4826#comment-57586 <div class="quote-msg"> <div class="quote-author"><em>mikekaganski</em> wrote:</div> <p>Unfortunately, the mod seems to incorrectly treat multi-valued attributes in the AD (the memberUid being one of those attributes). In the AD, the memberUid attribute of a group contains multiple [u]LDAP names[/u] of users belonging to that group (this data may not contain the information needed to construct the Jabber ID, and it may contain spaces). The user object doesn't contain an attribute indicating the groups it belongs to. In the OpenLdap world, it's common to take an alternate approach - that is, to include this information into the user object.</p></div> <p>Thanks for the reply... I was beginning to think no one exists here.</p> <p>So, from what I gather in your reply and the thread you've linked is that I need a single attribute to filter on for groups and user objects? That seems a little chaotic considering the current revisions of the plugin should understand that group and user objects will differ ... not even CAN, but most likely WILL.</p> <p>So I can see during some recent probing that the groups i want have element 'member', while the groups that I can get have memberUid. member has spaces, usually a 'firstName sn' format, with a matching OU=... blah blah blah how ever deep the OU goes.</p> <p>I guess ultimately... if I want to use ejabberd, I'd have to write my own AD aware ldap shared roster... which is going to be rather cumbersome since my openfire installation works, i just need to get it tuned or find some better situation. This is quite an upsetting issue, since I would think this sort of need could be fulfilled by a seasoned server ... and what appeared to be a very seasoned plugin.</p> <p>So... i'm wondering if I have my filters all wrong then.</p> <p>My needs -<br /> The 'Jabber' OU has my groups, they're CN is 'Jabber-*', each Jabber-* CN has the users I want listed under 'member' attribute, which each member has a varying length OU, but otherwise in the regex format (i believe) is 'CN=cn,(OU=*)*(,)OU=Company,DC=Example,DC=com.</p> <p>example.com<br /> --Company<br /> ----Billing<br /> ------Joe<br /> ------Steve<br /> ----Sales<br /> ------Billy<br /> ------Guy<br /> ----External<br /> ------Team1<br /> --------User1<br /> --------User2<br /> ------Team2<br /> --------User4<br /> --------User5<br /> ----Jabber<br /> ------Jabber-Group1<br /> ------Jabber-Group2</p> <p>So we have users spread out pretty sparsely; but the groups are all in one contained OU. Isn't there an easier way to just get the groups, and therefore display the CN's of the referenced 'member' of that group? Openfire is pretty explicit with this .. select the group, mark it as shared for the roster, the group has the userlist (it is displayed as sAMAccountName in the portal, but shows on the roster as the CN due to openfire configurations).</p> <p>The real hitch here is we need clustering/redundancy - this is why ejabberd is coming into play.</p> Mon, 11 Jul 2011 23:03:59 +0000 mengesb comment 57586 at https://www.ejabberd.im First, I must say that I https://www.ejabberd.im/node/4826#comment-57585 <p>First, I must say that I configured my AD shared roster some time ago using an archaic version (before porridge took over the maintanence of this mod). The things I describe in <a href="http://www.ejabberd.im/mod_shared_roster_ldap#comment-55054" title="http://www.ejabberd.im/mod_shared_roster_ldap#comment-55054">http://www.ejabberd.im/mod_shared_roster_ldap#comment-55054</a> and later comments may not be up-to-date, but I'm afraid they're not.</p> <p>Unfortunately, the mod seems to incorrectly treat multi-valued attributes in the AD (the memberUid being one of those attributes). In the AD, the memberUid attribute of a group contains multiple [u]LDAP names[/u] of users belonging to that group (this data may not contain the information needed to construct the Jabber ID, and it may contain spaces). The user object doesn't contain an attribute indicating the groups it belongs to. In the OpenLdap world, it's common to take an alternate approach - that is, to include this information into the user object.</p> <p>I had to implement a workaround - I use the "department" attribute to be the group. Thus, I have to manually populate this attribute for every user, and check that I don't make mistakes.<br /> By the way, my full config is referenced from the abovementioned page (it's on <a href="http://www.ejabberd.im/node/3661#comment-54984" title="http://www.ejabberd.im/node/3661#comment-54984">http://www.ejabberd.im/node/3661#comment-54984</a>).</p> Mon, 11 Jul 2011 22:10:43 +0000 mikekaganski comment 57585 at https://www.ejabberd.im One step forward. The https://www.ejabberd.im/node/4826#comment-57582 <p>One step forward. The following shows a flat list of 27 of my users... but definitely not all of them:</p> <div class="codeblock"><code>&nbsp; {mod_shared_roster_ldap,[<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_base, &quot;ou=Company,dc=example,dc=com&quot;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_groupattr,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;cn&quot;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_groupdesc,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;description&quot;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_memberattr,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;memberUid&quot;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_rfilter,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;(objectClass=*)&quot;},<br />%%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_gfilter,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;(&amp;(objectClass=group)(cn=Jabber-*))&quot;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_ufilter,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;(uid=%u)&quot;},<br />%%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_ufilter,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;(&amp;(objectCategory=user)(memberOf=*))&quot;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_useruid,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;uid&quot;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_userdesc,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;displayName&quot;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_filter,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;&quot;}<br />&nbsp; ]},</code></div> <p>Now, when using ldapsearch, and I filter with '(&amp;(objectClass=group)(cn=Jabber-*))' I get the groups in my OU for the Jabber user groups; they're presently prefixed with 'Jabber-' since I can re-label them in Openfire. When I add this filter in, my incomplete roster disappears. I'm also wondering why I'm getting a roster of 27 users, instead of my org which has over 200 users. When filtering my AD with '(&amp;(objectCategory=user)(memberOf=*))' I get all my users.</p> Mon, 11 Jul 2011 19:51:45 +0000 mengesb comment 57582 at https://www.ejabberd.im OK, well, I seem to be taking https://www.ejabberd.im/node/4826#comment-57581 <p>OK, well, I seem to be taking a few steps backwards, so here's how I understand our AD infrastruct:</p> <p>There is an OU Jabber within our company OU, so 'OU=Jabber,OU=Company,DC=example,DC=com'. I'm trying to get the groups and users referenced in that OU to show up, but I'm having difficulty with the filters. I've tried several revisions, here's my current revision; can someone help with what is wrong?</p> <div class="codeblock"><code>&nbsp; {mod_shared_roster_ldap,[<br />%%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_base,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;OU=Jabber,OU=Company,DC=example,DC=com&quot;},<br />%%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_base,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;OU=Company,DC=example,DC=com&quot;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_base,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;DC=example,DC=com&quot;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_groupattr,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;cn&quot;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_groupdesc,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;displayName&quot;},<br />%%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_memberattr,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;memberUid&quot;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_memberattr,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;member&quot;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_memberattr_format_re, &quot;cn=(.*),ou=Jabber,ou=Company,dc=example,dc=com&quot;},<br />%%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_memberattr_format_re, &quot;cn=(.*),ou=(.*),ou=Company,dc=example,dc=com&quot;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_useruid,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;cn&quot;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_userdesc,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;displayName&quot;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_rfilter,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;(objectClass=group)&quot;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_gfilter,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;(&amp;(objectClass=group)(cn=%g)&quot;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_ufilter,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;(&amp;(objectClass=person)(cn=(.*)))&quot;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ldap_filter,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;&quot;}<br />&nbsp; ]},</code></div> <p>This 'Jabber' OU is just a container. The actual users are members of a few different OU's, under the 'OU=Company,DC=example,DC=com' tree.<br /> I've based this filter off of a post: <a href="http://www.ejabberd.im/node/4722;" title="http://www.ejabberd.im/node/4722;">http://www.ejabberd.im/node/4722;</a> as you can see I've tried a few different methods but I'm still turning up empty.</p> <p>Help?</p> Mon, 11 Jul 2011 17:29:12 +0000 mengesb comment 57581 at https://www.ejabberd.im