自己动手写openfire 用户名密码验证

项目中需要 调用RPC 远程接口验证用户名密码,那么 默认的验证方式就不可以用了,需要动手修改。

看下面的文章之前,你需要下载一份openfire的源码。我的 是Openfire 3.9.3     客户端 是smack3.4

系统默认使用的  的 验证Provider 为  DefaultAuthProvider,我在authenticate 方法中打了断点,发现除了使用用户名密码登陆openfire的后台,其他的操作都不走这个断点,后来发现 默认的 验证是  DigestMD5Server 来验证的,客户端是根据服务器传回来的一个 证书(我们暂且这么叫)  然后客户端将密码用证书进行签名 得到一个新的字符串,然后将这个字符串给openfire  openfire 从数据库拿到密码,然后使用相同的算法签名密码  然后比较两个字符串是否相同,如果相同则登陆成功。


如果我们要在服务器获取到用户名密码,必须将验证方式改为plain,那么如何修改呢?  很多人说改openfire的配置,我改了好久都没改出来,最后实验,改客户端

在登陆之前添加以下代码,将验证方式改为 palin

 SASLAuthentication.supportSASLMechanism("PLAIN");


这样我们在 DefaultAuthProvider的authenticate  的断点就可以进了,我们阅读authenticate  方法的源码,发现,只要这个方法不抛异常 就代表验证成功,那么我们只需要改这里就可以实现 不读取数据库    远程验证的操作了。


因为plain 是明文 传输 ,所以一定要手动加密解密 密码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值