首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

openfire 调整现有数据库

2013-07-04 
openfire 整合现有数据库http://blog.csdn.net/heyi1214/article/details/4218199openfire扩展小试 整合现

openfire 整合现有数据库

http://blog.csdn.net/heyi1214/article/details/4218199

openfire扩展小试 整合现有系统用户?

如果我想使用现有系统的用户/组(部门),而不想使用openfire再去管理一套用户/组,用openfire可以非常方便的整合现有系统用户。?

进入openfire管理控制台-服务器-服务管理器-系统属性?
可以发现如下配置?
provider.auth.className?
org.jivesoftware.openfire.auth.DefaultAuthProvider?
*用户验证
provider.group.className?
org.jivesoftware.openfire.group.DefaultGroupProvider?
*获取组相关数据?
provider.user.className?
org.jivesoftware.openfire.user.DefaultUserProvider?
*获取用户相关数据?
这些Provider是openfire默认自己管理用户组?

但同时openfire还提供了支持JDBC相关的Provider,可以从其它的数据源获取用户/组数据?
将上面三个属性分别修改为?
org.jivesoftware.openfire.auth.JDBCAuthProvider?
org.jivesoftware.openfire.group.JDBCGroupProvider?
org.jivesoftware.openfire.user.JDBCUserProvider?

然后,需要配置一下数据源,添加如下属性?
jdbcProvider.driver?
*数据源驱动?
jdbcProvider.connectionString?
*连接字符串?

对每一个JDBC Provider需要配置相关的SQL语句和属性(在系统属性里添加项目)?

JDBCAuthProvider?
jdbcAuthProvider.passwordSQL?
*获取用户密码的SQL?
*输入参数:登录名?
*输入列:密码?
*例:SELECT pwd FROM user WHERE name=??
jdbcAuthProvider.passwordType?
*密码类型可以是:plain(文本),md5,sha1?
*如果你的密码加密不为以上三种 就需要自己提供一个AuthProvider,在下一章会专门介绍?


JDBCGroupProvider?
jdbcGroupProvider.allGroupsSQL?
*获取所有组的SQL?
*输入参数:无?
*输出列:组的KEY?
*例:SELECT sn FROM department?

jdbcGroupProvider.descriptionSQL?
*获取组的名称(描述)?
*输入参数:组记录的KEY?
*输出列:组的名称(描述)?
*例:SELECT name FROM department where sn=??

jdbcGroupProvider.groupCountSQL?
*获取组的数量?
*输入参数:组的KEY?
*输出列:组的数量?
*例:SELECT count(sn) FROM department?

jdbcGroupProvider.loadAdminsSQL?
*获取组的管理员?
*输入参数:组记录的KEY?
*输出列:组管理员的KEY?
*例:SELECT admin FROM department where sn=??

jdbcGroupProvider.loadMembersSQL?
*获取组的成员?
*输入参数:组的KEY?
*输出列:组成员的KEY(集合)?
*例:SELECT usersn FROM department_user where departmentsn=??

jdbcGroupProvider.userGroupsSQL?
*获取成员的组?
*输入参数:成员的KEY?
*输出列:成员所性组的KEY?
*例:SELECT departmentsn FROM department_user where usersn=??



JDBCUserProvider?
jdbcUserProvider.allUsersSQL?
*获取所有用户?
*输入参数:无?
*输出列:用户的KEY?
*例:SELECT sn from user?

jdbcUserProvider.userCountSQL?
*获取所有用户数量?
*输入参数:无?
*输出列:用户数量?
*例:SELECT count(sn) from user?

jdbcUserProvider.loadUserSQL?
*获取用户信息?
*输入参数:用户的KEY?
*输出列:登录名,名称,email(至少应该这三列,下面要用到)?
*例:SELECT loginname,name,email from user where sn =??

jdbcUserProvider.emailField?
*指定用户email的列名如:email?
jdbcUserProvider.nameField?
*指定用户名称的列名如:name?
jdbcUserProvider.usernameField?
*指定用户登录名的列名如:loginname?


最后 还需要配置新的管理员用户?
admin.authorizedJIDs?
*指定新数据源中的管理员用户注意是是完整JID(user@域名)?
*例:admin@server.cn?

配置好如上属性 重启openfire?
使用admin.authorizedJIDs中的用户名登录openfire管理控制台?
如果配置成功,进入openfire管理控制台-用户/组?
就可以看到你数据源中的用户/组信息了?
同时可以使用spark登录进行测试?


此外,如果在调试过程中出现问题 无法登录openfire管理控制台?
可以直接修改openfire数据库中的 OFPROPERTY表

热点排行