openfire整合现有系统用户

Openfire已经部署完成,使用admin登录,进入openfire管理控制台-服务器-服务管理器-系统属性页面中进行属性的设置或添加。如下图所示:

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中的数据,方可正常执行脚本。



你可能感兴趣的:(openfire,即时聊天,openfire属性,系统用户)