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

openfire调整现有系统用户

2013-08-10 
openfire整合现有系统用户公司oa系统与公司openfire 用户不同,现需要使用oa系统用户来登录 spark。由于公司

openfire整合现有系统用户

公司oa系统与公司openfire 用户不同,现需要使用oa系统用户来登录 spark。

由于公司组织架构有多层级,而openfire中多层级的组织架构 是用 :: 分隔的,

? ? ? ? ?如: ? ? ? ?公司::部门一::部门一下一

? ? ? ? ? ? ? ? ? ? ? ?公司::部门一::部门一下二

? ? ? ? ? ? ? ? ? ? ? ?公司::部门二::部门二下一

公司层次可以为多个公司,就集团模式

所以暂时不整合部门分组,只整合用户

? ? ? 本来打算直接将用户信息导入openfire用户表中,可是两边使用的加密方式不同。

? ? ? ? ? ? openfire使用的是org.jivesoftware.util.Blowfish。下面是解密

? ? ? ? ? ? ??

public String getEncryPWD(String noEncryPWD) {          String resultPWD = null;          String passWordKey = null; //passwordKey,从openfire数据库中读取          /*          *  下面这段是从ofProperty表中查询得到passwordKey的值。         OfProperty ofProperty = ofPropertyMapper.selectByPrimaryKey("passwordKey");         if (ofProperty != null) {             passWordKey = ofProperty.getPropvalue();         } */          Blowfish blowFish = new Blowfish(passWordKey); //根据加密key初始化          passWordKey = blowFish.encryptString(noEncryPWD); //加密          return resultPWD; //返回加密后的结果      }

?

我们系统使用的是SHA-256加密码 再加上base64

??

public static synchronized String encryptSha256(String inputStr) {     try {       MessageDigest md = MessageDigest.getInstance("SHA-256");        byte[] digest = md.digest(inputStr.getBytes("UTF-8"));        return new String(Base64.encodeBase64(digest));     }     catch (Exception e)     {     }     return null;   }

?没法解密。。所以导过去也没用

?

就使用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.JDBCAuthProviderorg.jivesoftware.openfire.group.JDBCGroupProviderorg.jivesoftware.openfire.user.JDBCUserProvider然后,需要配置一下数据源,添加如下属性:           jdbcProvider.driver  *数据源驱动           jdbcProvider.connectionString  *连接字符串对每一个JDBC Provider 需要配置相关的sql语句和属性(在系统属性里添加)      jdbcAuthProvider.passwordSQL            *获取用户密码的SQL             *输入参数:登录名              *输出列:密码              *例:select password from app_user where username=?      jdbcAuthProvider.passwordType         *密码类型可以是:plain(文本),md5,sha1,sha256,sha512        jdbcUserProvider.allUsersSQL               *获取所有用户               *输入参数:无               *输出列:用户的登录名               *例:select username from app_user        jdbcUserProvider.userCountSQL               *获取所有用户数量               *输入参数:无               *输出列:用户数量               *例:select count(0) from app_user         jdbcUserProvider.loadUserSQL               *获取用户信息               *输入参数:用户的登录名               *输出列:姓名,email               *例:select fullname,email from app_user where username=?          jdbcUserProvider.emailField          *指定用户email的列名如:email          jdbcUserProvider.nameField         *指定用户姓名的列名如:fullname  (上面loadUserSql查出来的fullname)          jdbcUserProvider.usernameField  *指定用户登录名的列名如:username 最后 还需要配置新的管理员用户          admin.authorizedJIDs    *指定新数据源中的管理员用户注意是是完整JID(user@域名)   *例:admin@server.cn

?

?

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

? ? ? ? 我的配置: 表app_user ? ? 主要字段: userId,username,password,fullname,email

INSERT INTO `ofproperty` VALUES ('admin.authorizedJIDs', 'admin@win-mas');INSERT INTO `ofproperty` VALUES ('jdbcAuthProvider.passwordSQL', 'select password from app_user where username=?'); -- 新增INSERT INTO `ofproperty` VALUES ('jdbcAuthProvider.passwordType', 'sha256'); -- 新增INSERT INTO `ofproperty` VALUES ('jdbcProvider.connectionString', 'jdbc:mysql://localhost:3306/oa2_ljt?user=root&password=123456'); -- 新增INSERT INTO `ofproperty` VALUES ('jdbcProvider.driver', 'com.mysql.jdbc.Driver'); -- 新增INSERT INTO `ofproperty` VALUES ('jdbcUserProvider.allUsersSQL', 'select username from app_user'); -- 新增INSERT INTO `ofproperty` VALUES ('jdbcUserProvider.emailField', 'email'); -- 新增INSERT INTO `ofproperty` VALUES ('jdbcUserProvider.loadUserSQL', 'select fullname,email from app_user where username=?'); -- 新增INSERT INTO `ofproperty` VALUES ('jdbcUserProvider.nameField', 'fullname'); -- 新增INSERT INTO `ofproperty` VALUES ('jdbcUserProvider.userCountSQL', 'select count(0) from app_user'); -- 新增INSERT INTO `ofproperty` VALUES ('jdbcUserProvider.usernameField', 'username'); -- 新增INSERT INTO `ofproperty` VALUES ('provider.auth.className', 'org.jivesoftware.openfire.auth.JDBCAuthProvider'); -- 修改INSERT INTO `ofproperty` VALUES ('provider.user.className', 'org.jivesoftware.openfire.user.JDBCUserProvider'); -- 修改openfire jdbcAuthProvider中使用的sha256和我们系统中还不同,给openfire增加了个我上面使用的sha256加密方法,用户整合成功

?

?

? ? ? ? ?

?

?

热点排行