Openfire已经部署完成,使用admin登录,进入openfire管理控制台-服务器-服务管理器-系统属性页面中进行属性的设置或添加。如下图所示:
在这里添加和修改对应属性和属性值即可,对应的属性和属性值介绍将在下面介绍。
当然也可以进入数据库中的ofproperty表中直接进行修改。
部分属性设置说明如下:
provider.auth.className org.jivesoftware.openfire.auth.DefaultAuthProvider *用户验证
provider.user.className org.jivesoftware.openfire.user.DefaultUserProvider *获取用户相关数据
这些Provider是openfire默认自己管理用户组
但同时openfire还提供了支持JDBC相关的Provider,可以从其它的数据源获取用户/组数据
将上面三个属性分别修改为
org.jivesoftware.openfire.auth.JDBCAuthProvider
org.jivesoftware.openfire.user.JDBCUserProvider
然后,需要配置一下数据源,添加如下属性
jdbcProvider.driver *数据源驱动
jdbcProvider.connectionString *连接字符串
对每一个JDBC Provider需要配置相关的SQL语句和属性(在系统属性里添加项目)
JDBCAuthProvider
jdbcAuthProvider.passwordSQL *获取用户密码的SQL
*例:SELECT passwd FROM accountinfo WHERE user_id =? jdbcAuthProvider.passwordType *密码类型
*例:md5
JDBCGroupProvider
jdbcGroupProvider.allGroupsSQL *获取所有组的SQL
*例:select group_id from groupinfo where group_status=1
jdbcGroupProvider.descriptionSQL *获取组的名称
*例:select group_name from groupinfo where group_id=? and group_status=1
jdbcGroupProvider.groupCountSQL *获取组的数量
*例:select count(group_id) from groupinfo where group_status=1
jdbcGroupProvider.loadAdminsSQL *获取组的管理员
*例:select ua.user_id from accountinfo ua,groupinfo rg where ua.user_id = rg.group_leader_id and rg.group_status=1 and group_id=?
jdbcGroupProvider.loadMembersSQL *获取组的成员
*例:select ua.user_id from accountinfo ua,groupfav rgv,groupinfo rg where rgv.group_id=rg.group_id and ua.user_id = rgv.user_id and rgv.is_passed=1 and rg.group_status=1 and rg.group_id=?
jdbcGroupProvider.userGroupsSQL *获取成员的组
*例:select rg.group_id from accountinfo ua,groupfav rgv,groupinfo rg where rgv.group_id=rg.group_id and ua.user_id = rgv.user_id and rg.group_status=1 and rgv.is_passed=1 and ua.user_id =?
JDBCUserProvider
jdbcUserProvider.allUsersSQL *获取所有用户
*例:SELECT user_id FROM user_accountinfo
jdbcUserProvider.userCountSQL *获取所有用户数量
*例:SELECT COUNT(*) FROM user_accountinfo
jdbcUserProvider.loadUserSQL *获取用户信息
*例:SELECT user_name,email FROM user_accountinfo WHERE user_id =?
jdbcUserProvider.emailField *指定用户email的列名
*例:email
jdbcUserProvider.nameField *指定用户名称的列名
*例:user_name
jdbcUserProvider.usernameField *指定用户登录名的列名
*例:user_id
最后 还需要配置新的管理员用户
admin.authorizedJIDs
*指定新数据源中的管理员用户注意是是完整JID(user@域名)
*例:1000@oschina.net
配置好如上属性 重启openfire,即可使用10000进行登录了。
使用admin.authorizedJIDs中的用户名登录openfire管理控制台 如果配置成功,进入openfire管理控制台-用户/组 就可以看到你数据源中的用户/组信息了 同时可以使用spark登录进行测试
此外,如果在调试过程中出现问题 无法登录openfire管理控制台
(这里需要注意的是在属性amdin.authorizedJIDs的值如设置成 1000@oschina.net,那么这里的1000就是openfire后台管理的管理员名,并且这个管理员的信息不是在我们原来的openfire指定的数据库里的管理员,而是在待集成系统的的数据库那里名为1000的管理员,当然我们也可以配置SQL来指定管理员从待集成信息的那个表时获取出来。)
如果一项一项的添加觉得麻烦,可以使用修改一下SQL脚本批量添加:
INSERT INTO `ofProperty`(`name`,`propValue`) VALUES
('admin.authorizedJIDs','1000@oschina.net'),
('jdbcAuthProvider.passwordSQL','SELECT passwd FROM accountinfo WHERE user_id =?'),
('jdbcAuthProvider.passwordType','md5'),
('jdbcProvider.connectionString','数据库连接字符串'),
('jdbcProvider.driver','数据库驱动'),
('jdbcUserProvider.allUsersSQL','SELECT user_id FROM accountinfo '),
('jdbcUserProvider.emailField','email'),
('jdbcUserProvider.loadUserSQL','SELECT user_name,email FROM accountinfo WHERE user_id =?'),
('jdbcUserProvider.nameField','user_name'),
('jdbcUserProvider.searchSQL','SELECT user_id FROM accountinfo WHERE'),
('jdbcUserProvider.userCountSQL','SELECT COUNT(*) FROM accountinfo '),
('jdbcUserProvider.usernameField','user_id '),('passwordKey','J3U0au2xTI0aPh3'),
('provider.admin.className','org.jivesoftware.openfire.admin.DefaultAdminProvider'),
('provider.auth.className','org.jivesoftware.openfire.auth.JDBCAuthProvider'),
('provider.group.className','org.jivesoftware.openfire.group.JDBCGroupProvider'),
('provider.lockout.className','org.jivesoftware.openfire.lockout.DefaultLockOutProvider'),
('provider.securityAudit.className','org.jivesoftware.openfire.security.DefaultSecurityAuditProvider'),
('provider.user.className','org.jivesoftware.openfire.user.JDBCUserProvider'),
('provider.vcard.className','org.jivesoftware.openfire.vcard.DefaultVCardProvider'),
('update.lastCheck','1420582479156'),
('xmpp.auth.anonymous','true'),
('xmpp.domain','oschina.net'),
('xmpp.session.conflict-limit','0'),
('xmpp.socket.ssl.active','true'),
('jdbcGroupProvider.allGroupsSQL','select group_id from groupinfo where group_status=1'),
('jdbcGroupProvider.descriptionSQL','select group_name from groupinfo where group_id=? and group_status=1'),
('jdbcGroupProvider.groupCountSQL','select count(group_id) from groupinfo where group_status=1'),
('jdbcGroupProvider.loadAdminsSQL','select ua.user_id from accountinfo ua,groupinfo rg where ua.user_id = rg.group_leader_id and rg.group_status=1 and group_id=?'),
('jdbcGroupProvider.loadMembersSQL','select ua.user_id from accountinfo ua,groupfav rgv,groupinfo rg where rgv.group_id=rg.group_id and ua.user_id = rgv.user_id and rgv.is_passed=1 and rg.group_status=1 and rg.group_id=?'),
('jdbcGroupProvider.userGroupsSQL','select rg.group_id from accountinfo ua,groupfav rgv,groupinfo rg where rgv.group_id=rg.group_id and ua.user_id = rgv.user_id and rg.group_status=1 and rgv.is_passed=1 and ua.user_id =?'),
('xmpp.jmx.enabled','false'),
('xmpp.jmx.secure','true'),
('xmpp.jmx.port','1099'),
('xmpp.offline.type','store_and_bounce'),
('xmpp.offline.quota','102400');
注意:执行数据库脚本时,要先清空ofproperty中的数据,方可正常执行脚本。