正常配置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后,登陆spark就可以看到组已经组员了。
备注一下:
属性名 | 属性值 | 编辑 | 删除 |
---|
admin.authorizedJIDs
|
user@domain.com.cn
| | |
ldap.adminDN
|
cn=root,dc=domain,dc=com
| | |
ldap.adminPassword
|
hidden
| | |
ldap.autoFollowAliasReferrals
|
true
| | |
ldap.autoFollowReferrals
|
false
| | |
ldap.baseDN
|
dc=domain,dc=com
| | |
ldap.connectionPoolEnabled
|
true
| | |
ldap.debugEnabled
|
false
| | |
ldap.emailField
|
mail
| | |
ldap.encloseDNs
|
true
| | |
ldap.groupDescriptionField
|
description
| | |
ldap.groupMemberField
|
member
| | |
ldap.groupNameField
|
ou
| | |
ldap.groupSearchFilter
|
(&(ou={0})(objectClass=organizationalUnit))
| | |
ldap.host
|
10.0.0.12
| | |
ldap.ldapDebugEnabled
|
false
| | |
ldap.nameField
|
description
| | |
ldap.override.avatar
|
true
| | |
ldap.port
|
389
| | |
ldap.posixMode
|
false
| | |
ldap.searchFields
|
| | |
ldap.searchFilter
|
(&(cn={0})(objectClass=inetOrgPerson))
| | |
ldap.sslEnabled
|
false
| | |
ldap.usernameField
|
cn
| | |
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>]]>
| | |
provider.auth.className
|
org.jivesoftware.openfire.ldap.LdapAuthProvider
| | |
provider.group.className
|
org.jivesoftware.openfire.ldap.LdapGroupProvider
| | |
provider.user.className
|
org.jivesoftware.openfire.ldap.LdapUserProvider
| | |
provider.vcard.className
|
org.jivesoftware.openfire.ldap.LdapVCardProvider
| | |
update.lastCheck
|
1379953378982
| | |
xmpp.auth.anonymous
|
true
| | |
xmpp.domain
|
domain.com.cn
| | |
xmpp.session.conflict-limit
|
0
| | |
xmpp.socket.ssl.active
|
true
| |
|
这是一个介绍关于ldap group的连接:http://www.zytrax.com/books/ldap/ch11/groups.html
转载于:https://blog.51cto.com/iitnet/1301100