openfire整合用户 之 改变密码验证方式
来源:互联网 发布:淘宝上传照片尺寸 编辑:程序博客网 时间:2024/06/04 19:21
我要说的是改变openfire密码验证方式的方案,情形是这样的:在openfire默认的验证方式,主要借助DefaultAuthProvider,以登录操作为例,由BlowFish类提供加解密方案并由AuthFactory来管理对BlowFish的调用,从而完成用户输入密码的校验过程,具体过程大家可以跟代码,不过比较肯定的一点是openfire服务器在收到<auth />节的消息后开始校验工作的。
我看了网上的一些关于用户整合的资料,这个是openfire官方的资料http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/db-integration-guide.html,这个是某网友整理的资料http://hi.baidu.com/tonent/blog/item/8e4d00d536f477cf50da4b3b.html,可能站的高度比较高吧,说的也比较清楚,只是在我具体实现时会有各种各样的疑问。我目的是修改密码的加密方式,改为MD5加密,我的思路是借助JDBCAuthProvider验证登录,通过继承JDBCUserProvider重写createUser和deleteUser方法这样的方式,来创建删除用户。之所以选择继承是为了遵循闭合原则,保持原openfire的完成性,可以把继承类写在插件里,只要在配置provider.user.className参数时指定它的全路径名即可。注意新的isReadOnly()要return false,也就是告诉外部的调用者,该类(UserProvider)还可以完成修改数据的工作。
具体操作和上述链接所讲的差不多,不过由于我在开发中没有用到组的数据,所以provider.group.className仍取默认值,个人感觉这样做应该没什么问题。有点需要注意的是jdbcProvider.connectionString的值问题,如果直接在ofproperty表中添加数据可以直接写,如jdbc:mysql://localhost/dbName?user=user&password=password&useUnicode=true&characterEncoding=utf-8,不过在xml文档里配置的话要把&写成&这样的形式。还有指定jdbcAuthProvider.passwordType为md5(想要的加密方式),不过查看JDBCAuthProvider的类注释可以看到它只支持plain,md5,sha1,sha256,sha512等加密方式,若是不在这个范围之内,要写自己的AuthProvider的。
如果上面说的不是很明白的话,一定要看代码,包括业务代码还有各种注释。通过堆栈跟踪具体的执行流程,我把DefaultAuthProvider和JDBCAuthProvider验证方式的堆栈调用贴出来吧,都是登录操作的代码执行过程。
上面是Default的,下面的是JDBC的,要注意DigestMD5Server和SaslServerPlainImpl的处理,最后都会交给XMPPCallbackHandler。前一种是在收到<response />节的内容开始的,后一种是收到<auth />节后开始。
- openfire整合用户 之 改变密码验证方式
- 【Openfire】验证用户输入密码是否正确
- XMPP 之Openfire的用户数据库整合
- openfire整合现有系统用户
- openfire整合现有系统用户
- openfire整合现有系统用户
- Openfire 整合自有用户系统
- openfire整合现有系统用户
- openfire整合现有用户系统
- xmpp with openfire之三 openfire扩展小试 整合现有系统用户
- xmpp with openfire之三 openfire扩展小试 整合现有系统用户
- xmpp with openfire之三 openfire扩展小试 整合现有系统用户
- spring 整合 shiro 之用户验证
- openfire用户验证知多少
- openfire整合已有用户数据库 分享
- openfire如何整合不同的用户系统
- openfire登陆及密码验证过程
- 自己动手写openfire 用户名密码验证
- sql通过触发器避免导入重复数据
- 密钥系统简介
- js无提示框,关闭当前窗口
- 【条款7】Declare destructors virtual in polymorphic classes
- java字符串转时间 js时间比较大小
- openfire整合用户 之 改变密码验证方式
- java增强for和循环常用形式
- PHP获取汉字的拼音(全部与首字母)(转载)
- CentOS下新建sudo用户
- 经典算法
- SQLITE3 使用总结
- [Java] 线程中断(三)
- 月初伤感日志巨献:爱流逝了,我依旧等你
- 两个人玩石头剪刀布的问题升级版