公司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.JDBCAuthProvider org.jivesoftware.openfire.group.JDBCGroupProvider org.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加密方法,用户整合成功
相关推荐
[经典] Openfire SPARK 整合 扩展用户 用户组
NULL 博文链接:https://linfengsheng.iteye.com/blog/1343814
openfire 用户整合,手把手交你实现。
这是一个OpenFire集成Oracle数据库来集成现有系统中的用户管理时的ofproperty表信息
openfire mac系统安装文件 Openfire (formerly Wildfire) is a cross-platform real-time collaboration server based on the XMPP (Jabber) protocol.
自己写的获取所有在线用户的openfire插件,直接上传到openfire服务器即可使用,访问路径为host:port/plugins/onlines/listall
实现openfire与用户数据库集成 实现用户认证、用户查询
openfire集成第三方系统配置,数据库配置方法
代码里做了逻辑处理,会随机只返回3个,改下就可以了 访问路径 127.0.0.1:8080/plugins/onlineuser/getallusers
openfire插件,用户入群加web接口,史上最全,下载即用
Openfire3.7.1集群配置,针对需要多用户同时在线的openfire架构集群配置设置
对Openfire进行扩展,支持在线指定聊天室和全部在线人员的查看。
openfire的用户接收消息计数器,应用很方便,通过填写openfire的用户user_no号与密码,还有服务器的ip地址,点击登录就可以等待消息的接收,并且统计接收消息的数量.
openfire3.10.2源码所缺少的10个jar包(注:包含其它缺少的包,共10个包,且包含整个配置的全过程,直到运行成功) 讲述Openfire3.10beta版源码在eclipse上部署编译的全过程,直到编译且运行通过。 包有:pack200...
让人快速上手openfire插件的开发,让你节省更多时间了解源码。
这是一篇openfire服务器部署的文档,里面描述如何安装配置Openfire3.8.2服务器,并集成现有系统的用户管理。
Android 开发 openfire xmpp 协议 即时通讯
基于openfire服务器的的IM系统源程序,用基于QT的QXMPP协议库封装的
Java领域的即时通信的解决方案可以考虑openfire+spark+smack。...对于局域网内部应用足以解决系统与用户交互的问题,甚至可以做自动应答机器人。 Spark支持聊天,语音,视频,会议,文件收发,截屏,连接msn等功能。
openfire 3.9.3源码导入eclipse进行二次开发或学习所需要的包!