正常配置openfire使用ldap认证后,在openfire后台可以看到所有用户和组,但是组里面没有用户。

解决方法:

一、增加member属性到organizationalUnit这个objectclass中

编辑core.schema

这个schema中有member这个attribute,但是organizationalUnit objectclass中没有启用,所以在:

objectclass ( 2.5.6.5 NAME 'organizationalUnit'

DESC 'RFC2256: an organizational unit'

SUP top STRUCTURAL

MUST ou

MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $

x121Address $ registeredAddress $ destinationIndicator $

preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $

telephoneNumber $ internationaliSDNNumber $

facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $

postalAddress $ physicalDeliveryOfficeName $ st $ l $ description $ member ) )

中增加$ member,重启ldap即可。


二、修改openfire.script脚本:

编辑/opt/openfire/embedded-db/openfire.script文件,修改如下行为:

INSERT INTO OFPROPERTY VALUES('ldap.groupMemberField','seeAlso')

INSERT INTO OFPROPERTY VALUES('ldap.groupMemberField','member')


三、添加组员到组中。

这样在ldapadmin后台OU里面添加新的attribute的时候就可以看到member这个属性了。member的值如下图所示:

openfire使用ldap认证,组的过滤设置_openldap openfire


这样,重启openfire和ldap后,登陆spark就可以看到组已经组员了。


备注一下:

属性名属性值编辑删除
admin.authorizedJIDs
user@domain.com.cn
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.adminDN
cn=root,dc=domain,dc=com
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.adminPassword
hidden
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.autoFollowAliasReferrals
true
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.autoFollowReferrals
false
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.baseDN
dc=domain,dc=com
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.connectionPoolEnabled
true
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.debugEnabled
false
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.emailField
mail
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.encloseDNs
true
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.groupDescriptionField
description
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.groupMemberField
member
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.groupNameField
ou
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.groupSearchFilter
(&(ou={0})(objectClass=organizationalUnit))
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.host
10.0.0.12
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.ldapDebugEnabled
false
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.nameField
description
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.override.avatar
true
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.port
389
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.posixMode
false
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.searchFields

openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.searchFilter
(&(cn={0})(objectClass=inetOrgPerson))
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.sslEnabled
false
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.usernameField
cn
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
ldap.vcard-mapping
<span title="<![CDATA[<br><vCard xmlns=" vcard-temp"><N>
<GIVEN>{description}</GIVEN>
</N>
<EMAIL>
<INTERNET/>
<USERID>{mail}</USERID>
</EMAIL>
<FN>{description}</FN>
<NICKNAME>{uid}</NICKNAME>
<ADR>
<HOME/>
</ADR>
<ADR>
<WORK/>
</ADR>
</vCard>]]>"><![CDATA[
<vCard xmlns="vcard-temp">
<N>
<GIVEN>{description}</GIVEN>
</N>
<EMAIL>
<INTERNET/>
<USERID>{mail}</USERID>
</EMAIL>
<FN>{description}</FN>
<NICKNAME>{uid}</NICKNAME>
<ADR>
<HOME/>
</ADR>
<ADR>
<WORK/>
</ADR>
</vCard>]]>
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
provider.auth.className
org.jivesoftware.openfire.ldap.LdapAuthProvider
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
provider.group.className
org.jivesoftware.openfire.ldap.LdapGroupProvider
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
provider.user.className
org.jivesoftware.openfire.ldap.LdapUserProvider
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
provider.vcard.className
org.jivesoftware.openfire.ldap.LdapVCardProvider
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
update.lastCheck
1379953378982
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
xmpp.auth.anonymous
true
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
xmpp.domain
domain.com.cn
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
xmpp.session.conflict-limit
0
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03
xmpp.socket.ssl.active
true
openfire使用ldap认证,组的过滤设置_openldap openfire_02openfire使用ldap认证,组的过滤设置_openldap openfire_03


这是一个介绍关于ldap group的连接:http://www.zytrax.com/books/ldap/ch11/groups.html