`

Openfire 集成 原有用户系统

 
阅读更多

Openfire 提供了一套 JDBC的用户整合方案,使用这个方案可以整合现有系统用户信息;

所有的配置信息都可以Openfire的控制台完成配置,不过作为屌丝程序员,还是习惯了直接通过sql修改配置的方式完成;

 

修改的配置信息如下:

delete from ofProperty;
Insert into ofProperty (name,propValue) values ('adminConsole.port','9090');
Insert into ofProperty (name,propValue) values ('adminConsole.securePort','9091');
Insert into ofProperty (name,propValue) values ('connectionProvider.className','org.jivesoftware.database.DefaultConnectionProvider');
Insert into ofProperty (name,propValue) values ('database.defaultProvider.connectionTimeout','1.0');
Insert into ofProperty (name,propValue) values ('database.defaultProvider.driver','com.mysql.jdbc.Driver');
Insert into ofProperty (name,propValue) values ('database.defaultProvider.maxConnections','25');
Insert into ofProperty (name,propValue) values ('database.defaultProvider.minConnections','5');
Insert into ofProperty (name,propValue) values ('database.defaultProvider.password','cb0f3ccb874f50cbc9967bb547ba7911458731ad8aaa06b3');
Insert into ofProperty (name,propValue) values ('database.defaultProvider.serverURL','jdbc:mysql://10.1.19.244:3306/openfire5?rewriteBatchedStatements=true');
Insert into ofProperty (name,propValue) values ('database.defaultProvider.testAfterUse','false');
Insert into ofProperty (name,propValue) values ('database.defaultProvider.testBeforeUse','false');
Insert into ofProperty (name,propValue) values ('database.defaultProvider.testSQL','select 1');
Insert into ofProperty (name,propValue) values ('database.defaultProvider.username','b5f168b82d709ae7dc49db3df43857b75f5b577c4a446fbb6813eb2da8e1de37');
Insert into ofProperty (name,propValue) values ('locale','en');
Insert into ofProperty (name,propValue) values ('passwordKey','2H98aR1Mr4Bvs4y');
Insert into ofProperty (name,propValue) values ('provider.admin.className','org.jivesoftware.openfire.admin.DefaultAdminProvider');
Insert into ofProperty (name,propValue) values ('provider.lockout.className','org.jivesoftware.openfire.lockout.DefaultLockOutProvider');
Insert into ofProperty (name,propValue) values ('provider.securityAudit.className','org.jivesoftware.openfire.security.DefaultSecurityAuditProvider');
Insert into ofProperty (name,propValue) values ('provider.vcard.className','org.jivesoftware.openfire.vcard.DefaultVCardProvider');
Insert into ofProperty (name,propValue) values ('setup','true');
Insert into ofProperty (name,propValue) values ('update.lastCheck','1450424871909');
Insert into ofProperty (name,propValue) values ('xmpp.auth.anonymous','true');
Insert into ofProperty (name,propValue) values ('xmpp.domain','openfire03');
Insert into ofProperty (name,propValue) values ('xmpp.session.conflict-limit','0');
Insert into ofProperty (name,propValue) values ('xmpp.socket.ssl.active','true');


--整合用户系统使用
--查询密码
Insert into ofProperty (name,propValue) values ('jdbcAuthProvider.passwordSQL','select pwd from bs_mbopt where userid=?');
--密码加密方式
Insert into ofProperty (name,propValue) values ('jdbcAuthProvider.passwordType','md5 ');
--数据库连接字符串
Insert into ofProperty (name,propValue) values ('jdbcProvider.connectionString','jdbc:oracle:thin:@10.67.2.6:1521/dzsw');
--数据库驱动
Insert into ofProperty (name,propValue) values ('jdbcProvider.driver','oracle.jdbc.driver.OracleDriver');
--所有用户
Insert into ofProperty (name,propValue) values ('jdbcUserProvider.allUsersSQL','select userid from bs_mbopt');
--email字段
Insert into ofProperty (name,propValue) values ('jdbcUserProvider.emailField','email');
--查询用户信息
Insert into ofProperty (name,propValue) values ('jdbcUserProvider.loadUserSQL','select username,email from bs_mbopt where userid=?');
--用户名字段
Insert into ofProperty (name,propValue) values ('jdbcUserProvider.nameField','username');
--检索使用
Insert into ofProperty (name,propValue) values ('jdbcUserProvider.searchSQL','select userid from bs_mbopt where ');
--统计用户数量
Insert into ofProperty (name,propValue) values ('jdbcUserProvider.userCountSQL','select count(1) from bs_mbopt');
--用户id
Insert into ofProperty (name,propValue) values ('jdbcUserProvider.usernameField','userid');
--密码认证
Insert into ofProperty (name,propValue) values ('provider.auth.className','com.jl.openfire.plugin.usermanager.JDBCAuthProvider');
--用户分组使用
Insert into ofProperty (name,propValue) values ('provider.group.className','com.jl.openfire.plugin.usermanager.JDBCGroupProvider');
--用户信息查询
Insert into ofProperty (name,propValue) values ('provider.user.className','com.jl.openfire.plugin.usermanager.JDBCUserProvider');
-- 自定义字段,用户来保存jdbc用户名及密码
Insert into ofProperty (name,propValue) values ('jdbcAuthProvider.jdbcPassword','fsbsdb_1');
Insert into ofProperty (name,propValue) values ('jdbcAuthProvider.jdbcUserName','fsbsdb_1');

-- 所有分组信息
Insert into ofProperty (name,propValue) values ('jdbcGroupProvider.allGroupsSQL','select nkname from bs_menber');
-- 分组描述信息
Insert into ofProperty (name,propValue) values ('jdbcGroupProvider.descriptionSQL','select Mbname from bs_menber where nkname=?');
-- 所有分组
Insert into ofProperty (name,propValue) values ('jdbcGroupProvider.groupCountSQL','select count(1) from bs_menber');
--根据分组查询管理员
Insert into ofProperty (name,propValue) values ('jdbcGroupProvider.loadAdminsSQL','select opt.userid from bs_mbopt opt inner join bs_menber mb on opt.hydm = mb.hydm where mb.nkname=? and opt.isadmin = 0');
--查询分组下的所有成员
Insert into ofProperty (name,propValue) values ('jdbcGroupProvider.loadMembersSQL','select opt.userid from bs_mbopt opt inner join bs_menber mb on opt.hydm = mb.hydm where mb.nkname=? and opt.isadmin = 1');
--查询某个成员归属的分组名称
Insert into ofProperty (name,propValue) values ('jdbcGroupProvider.userGroupsSQL','select mb.nkname from bs_mbopt opt inner join bs_menber mb on opt.hydm = mb.hydm where opt.userid=?');

 

 

修改管理员

Insert into ofProperty (name,propValue) values ('admin.authorizedJIDs','guochen@domain');

 

 完成以上配置后发现一个很严重的问题,登录没有成功过!

比较之后发现,现有系统中的密码加密方式是MD5,而且md5加密时给了几个种子;看了一下Openfire的源码(org.jivesoftware.openfire.auth.JDBCAuthProvider), 没有发现可以通过配置实现这样验证的方式。。。没办法,自己实现一个JDBCAuthProvider,Openfire不建议修改源码,提倡使用插件方式来实现自定义业务需求,所以我也是通过插件来实现的; 将开发完成的jar 包含:JDBCAuthProvider、 JDBCUserProvider、JDBCGroupProvider上传到openfire服务器中;

重启服务,通过Spark登录成功!

 

 

分享到:
评论

相关推荐

    openfire集成第三方系统

    openfire集成第三方系统配置,数据库配置方法

    openfire 集成用户数据库

    在企业级即时通讯系统部署过程中,为了确保数据的一致性和提高用户体验,通常会遇到一个关键需求:将Openfire服务器与现有的用户数据库进行集成。这样的集成可以实现统一的用户认证管理、避免数据冗余,并能充分利用...

    OpenFire集成现在系统用户的ofproperty表信息

    这是一个OpenFire集成Oracle数据库来集成现有系统中的用户管理时的ofproperty表信息

    openfire扩展整合现有系统用户

    标题中的“openfire扩展整合现有系统用户”是指在Openfire这款开源即时通讯服务器上,将已有的用户系统(如企业内部的LDAP、AD等)与Openfire进行集成,实现用户身份验证和管理的一体化。Openfire是一款基于Java开发...

    OpenFire所有在线用户

    8. **扩展与集成**:OpenFire支持与其他系统的集成,例如与其他应用同步用户数据,或者通过Webhook实现事件通知。 在OpenFire的压缩包文件"onlineuser"中,可能包含了插件的源代码、配置文件或其他资源,你可以通过...

    [经典]Openfire整合现有用户

    在企业环境中,通常需要将Openfire与现有的用户管理系统进行整合,以便利用已有的用户数据,如LDAP(轻量级目录访问协议)或数据库中的用户信息。本文将详细介绍如何将Openfire与现有的用户资源进行整合,并扩展其...

    openfire插件,用户入群加web接口

    总之,"openfire插件,用户入群加web接口"涉及到的技术点包括Openfire插件开发、Web服务接口设计、Openfire API的使用以及系统安全性和集成测试。通过这样的实现,可以高效地自动化用户入群的过程,提高协作效率。

    openfire mac系统安装文件

    openfire mac系统安装文件 Openfire (formerly Wildfire) is a cross-platform real-time collaboration server based on the XMPP (Jabber) protocol.

    获取MQ的值通过openfire推送消息源码【史上最强版】

    在IT行业中,消息队列(Message Queue,MQ)和Openfire是两个重要的技术概念,用于构建高效、可扩展的应用系统。本资源提供了通过MQ获取值并利用Openfire进行消息推送的源码,被誉为“史上最强版”,对于学习和实践...

    openfire获取所有在线用户插件

    自己写的获取所有在线用户的openfire插件,直接上传到openfire服务器即可使用,访问路径为host:port/plugins/onlines/listall

    openfire整合系统用户

    openfire 用户整合,手把手交你实现。

    openfire的用户接收消息计数器

    在Openfire中,实现用户接收消息的计数功能是提升通信效率和监控系统性能的重要一环。本文将深入探讨如何利用"openfire的用户接收消息计数器"这一工具来实现这一目标。 首先,我们要理解计数器的工作原理。计数器...

    openfire red5插件 sparkweb源码

    Openfire的核心功能包括用户管理、群组聊天、文件传输以及与其他通信系统的集成。 Red5是一个开源的流媒体服务器,能够处理音视频流,支持录制、播放、直播等功能。Red5基于Java开发,与Openfire结合,可以实现丰富...

    基于Openfire服务器的用户行为审计插件设计与实现.pdf

    基于Openfire服务器的用户行为审计插件设计与实现 本文设计和实现了一个基于Openfire服务器的用户行为审计插件,名为actionAuditor。该插件由三个模块组成,能够实现用户行为记录、查询、存储、备份、导出、排序、...

    openfire部署学习资料

    2. LDAP集成:Openfire可以与LDAP服务器集成,实现用户身份验证和用户数据的集中管理。 六、故障排查与优化 1. 日志分析:熟悉Openfire的日志系统,学会从日志中查找错误和异常,是解决问题的关键。 2. 性能监控:...

    openfire+smack 4.x+websocket的消息推送服务

    Openfire、Smack 4.x 和 WebSocket 是构建实时通信系统中的关键组件,它们共同为消息推送服务提供了强大的支持。Openfire 是一个开源的即时通讯服务器,Smack 是一个 Java 和 Android 上的 XMPP(可扩展通讯与表示...

    openfire即时通信

    总之,“openfire即时通信”项目不仅是一个即时通讯的实现,也是学习和实践XMPP协议以及SCADA系统集成的良好实例,对于想要在这些领域深化技术能力的开发者来说,具有很高的参考价值。通过深入研究和实践,可以...

    基于openfire服务器的的IM系统源程序

    "基于openfire服务器的IM系统源程序" 指的是一款即时通讯(IM)系统,它的核心是使用了openfire服务器作为后台服务。Openfire是一款开源、基于XMPP(Extensible Messaging and Presence Protocol)协议的即时通讯...

    openfire 3.9.3第二次开发集成所需要的包

    在这个“openfire 3.9.3第二次开发集成所需要的包”中,关键组件是`bouncycastle.jar`,这是一个重要的Java库,对我们的开发工作至关重要。 Bouncy Castle 是一个广泛使用的Java加密库,提供了大量的加密算法、密钥...

Global site tag (gtag.js) - Google Analytics