ejabberd mod_shared_roster_ldap - 在客户端显示 AD 组名称

ejabberd mod_shared_roster_ldap - 在客户端显示 AD 组名称

我们正在使用带有 Active Directory 身份验证的 ejabberd 19.02,并使用 mod_shared_roster_ldap 显示来自 AD 组的联系人。

它工作正常,但有一个问题。在 Pidgin 中,默认组是“好友”,我们想显示 AD 组名。我没有完成在 Pidgin 中显示 AD 组名的配置。

AD 组名称为:XMPP-Messenger

这是 mod_shared_roster_ldap 配置。如果有人能帮助我显示组名称或组描述就太好了:

 ldap_base: "DC=our,DC=domain,DC=com" # Search base of LDAP directory
    ldap_groupattr: "sAMAccountName"
    ldap_groupdesc: ""
    ldap_memberattr: "sAMAccountName"
    ldap_memberattr_format: "%u"
    ldap_useruid: "sAMAccountName"
    ldap_userdesc: "displayName"
    ldap_rfilter: "(&(objectCategory=group)(cn=XMPP-Messenger))"
    ldap_gfilter: "(&(objectCategory=user)(memberOf=CN=XMPP-Messenger,OU=to,OU=Path,DC=our,DC=domain,DC=com))"
    ldap_ufilter: "(&(objectClass=user)(sAMAccountName=%u))"
    ldap_filter: ""
    ldap_group_cache_validity: 60
    ldap_user_cache_validity: 60
    ldap_auth_check: off

谢谢,并致以最诚挚的问候。

答案1

我的 mod_shared_roster_ldap 配置:

mod_shared_roster_ldap:
ldap_base: "DC=domain,DC=local"
ldap_rfilter: "(&(objectCategory=group)(info=jabber))"
ldap_gfilter: "(&(objectCategory=group)(info=jabber)(distinguishedName=%g))"
ldap_groupattr: "distinguishedName"
ldap_groupdesc: "displayName"
ldap_memberattr: "member"
ldap_memberattr_format_re: "CN=([^,]*),(OU=.*,)*DC=domain,DC=local"
ldap_ufilter: "(&(objectCategory=user)(sAMAccountName=%u))"
ldap_useruid: "sAMAccountName"
ldap_userdesc: "displayName"
ldap_filter: "(|(objectClass=group)(objectClass=user))"

gfilter 搜索在 rfilter 中找到的组。ldap_memberattr 搜索每个组的成员。技巧在于 ldap_memberattr_format_re。这是一个正则表达式,搜索 CN=*,OU 上的值......如果用户在 gfilter 中找到虚拟主机,则 Ejabberd 控件,在我的 ldap 配置部分中,我根据 sAMAccountName 过滤用户。所以我们需要将正则表达式与 sAMAccountName 值匹配。

希望这可以帮助到别人:)

相关内容