使用API​​而不是sql查询来验证openfire

时间:2017-10-04 14:16:46

标签: openfire

  

是否可以在openfire属性中使用API​​代替sql查询进行用户身份验证:
  jdbcAuthProvider.passwordSQL: SELECT用户名FROM   chat_authentication WHERE username =?

基本上,我们的mysql数据库中的chat_authentication表运行不正常,因此表中没有一些用户的条目。所以我想直接点击API(故障率非常低)。在这种情况下我该怎么做?

1 个答案:

答案 0 :(得分:1)

您必须创建自己的类来替换Openfire的DefaultAuthProvider.class

看起来像:

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

并正确实现所有方法。

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

  • public void authenticate(String username,String password)抛出UnauthorizedException
  • public void authenticate(String username,String token,String digest)抛出UnauthorizedException
  • getPassword来(字符串)
  • public boolean checkPassword(String username,String testPassword)抛出UserNotFoundException
  • public void setPassword(String username,String password)。

最后,制作一个类的jar,将其部署在openfireDirectory/lib并更改属性值

provider.auth.className

使用您的MyAuthProvider全名。 你可以做到

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

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