使用API代替SQL查询来验证OpenFire中的用户



可以使用API而不是按照SQL查询进行openfire属性中的用户身份验证:
JDBCAUTHPROVIDER.PASSWORDSQL:从中选择用户名 chat_authentication where用户名=?

基本上,我们的MySQL数据库中的CHAT_AUTHENTICATION表无法正常运行,因此某些用户的条目不在表中。因此,我想直接击中API(失败率非常低)。在这种情况下,我该怎么做?

您必须创建自己的类才能替换OpenFire的DefaultAuthProvider.class

可以看起来像:

import org.jivesoftware.openfire.auth.AuthProvider
public class MyAuthProvider implements AuthProvider

并正确实现了所有方法。

作为替代方案,您可以扩展DefaultAuthProvider的范围并覆盖所有方法

  • public void Authenticate(字符串用户名,字符串密码)抛出未授权的Exception
  • public void authenticate(字符串用户名,字符串令牌,字符串摘要)抛出未授权的exception
  • getPassword(string)
  • public boolean checkpassword(字符串用户名,字符串testpassword)抛出usernotfoundexception
  • public void setPassword(字符串用户名,字符串密码)。

最后,做一罐您的班级,将其部署在openfireDirectory/lib中,然后更改属性的值

provider.auth.className

使用您的MyauthProvider fullname。你可以做

  • 通过管理控制台面板 ->服务器 ->系统属性
  • 或通过数据库更新Property表。

之后,您必须关闭并启动OpenFire。

最新更新