写在前面:openfire的群我们自己实现了持久化的群,所以本文不考虑群方面的用户操作。
本人使用Mysql作为openfire的数据库,自有系统的用户库也是Mysql。需要将openfire的用户全部走自己的业务系统进行授权和验证,所以需要在openfire中进行自有用户数据库的整合。
Let's go ------------------------------------------------
针对用户的验证:openfire提供的默认的处理类是DefaultAuthProvider,需要使用自己的处理类那么就需要修改为JDBCAuthProvider。
![点击查看原始大小图片](https://i-blog.csdnimg.cn/blog_migrate/5fb3d3cd80787ab621b24eae9ed9d7bb.png)
需要修改些自己需要验证的配置:
![点击查看原始大小图片](https://i-blog.csdnimg.cn/blog_migrate/4365c122cc48dc208dc004dde1ebaa8c.png)
它在控制台会hidden很多比较敏感的配置,具体请参照:
http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/db-integration-guide.html
不需要修改openfire任何代码,只需要做到这里,基本上就完成了自有数据库验证的整合。重启登录,你会发现admin帐号无法登陆,请确认admin账户在自有数据库是否存在,并且密码加密方式是否正确。一切OK后admin console可以登录。 用spark客户端测试登录正常。
----------------------------------------------------------------------------------
针对用户的检索:openfire提供的默认处理类是DefaultUserProvider,需要使用自己的处理类,不然的话在用户检索那里会发现查询出来的目的库还是openfire自由的数据库用户表ofUser,修改为JDBCUserProvider。
![点击查看原始大小图片](https://i-blog.csdnimg.cn/blog_migrate/75eaf3d76f05e4415f10b643d378f400.png)
添加一部分需要自己配置的属性:
![点击查看原始大小图片](https://i-blog.csdnimg.cn/blog_migrate/a56dc7585de6060da5940dd4d5e4030e.png)
保存重启,点击用户/组,等啊等,等好久打不开,为什么?查看源代码发现JDBCUserProvider有个地方有问题,查询出了所有的用户,显然和DefaultUserProvider不一样。 查看了3.7.1和3.8.1的源代码,这一块都是没有解决的。3.8.2已经修复此BUG。参见下图:
![点击查看原始大小图片](https://i-blog.csdnimg.cn/blog_migrate/e813bc0c0a11df316624808e587c8b58.png)
修改:
![点击查看原始大小图片](https://i-blog.csdnimg.cn/blog_migrate/7b82f3ef059e5a0e92cad65f44e0f710.png)
修改这里代码重新上传openfire.jar,重启。OK。
版权声明]本站内文章,如未特别注明,均系原创或翻译之作,本人保留一切权利。本站原创及译作未经本人许可,不得用于商业用途及传统媒体。网络媒体可随意转载,或以此为基础进行演译,但务必以链接形式注明原始出处和作者信息,否则属于侵权行为。另对本站转载他处文章,俱有说明,如有侵权请联系本人,本人将会在第一时间删除侵权文章。及此说明,重中之重。