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 djh_user_accountinfo jdbcUserProvider.userCountSQL *获取所有用户数量 *例:SELECT COUNT(*) FROM djh_user_accountinfo jdbcUserProvider.loadUserSQL *获取用户信息 *例:SELECT user_name,email FROM djh_user_accountinfo WHERE user_id =? jdbcUserProvider.emailField *指定用户email的列名 *例:email jdbcUserProvider.nameField *指定用户名称的列名 *例:user_name jdbcUserProvider.usernameField *指定用户登录名的列名 *例:user_id 最后 还需要配置新的管理员用户 admin.authorizedJIDs *指定新数据源中的管理员用户注意是是完整JID(user@域名) *例:[email protected]
配置好如上属性 重启openfire,即可使用10000进行登录了。
使用admin.authorizedJIDs中的用户名登录openfire管理控制台 如果配置成功,进入openfire管理控制台-用户/组 就可以看到你数据源中的用户/组信息了 同时可以使用spark登录进行测试
此外,如果在调试过程中出现问题 无法登录openfire管理控制台
(这里需要注意的是在属性amdin.authorizedJIDs的值如设置成 [email protected],那么这里的1000就是openfire后台管理的管理员名,并且这个管理员的信息不是在我们原来的openfire指定的数据库里的管理员,而是在待集成系统的的数据库那里名为1000的管理员,当然我们也可以配置SQL来指定管理员从待集成信息的那个表时获取出来。)
如果一项一项的添加觉得麻烦,可以使用修改一下SQL脚本批量添加:INSERT INTO `ofProperty`(`name`,`propValue`) VALUES ('admin.authorizedJIDs','[email protected]'), ('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中的数据,方可正常执行脚本。