【问题标题】:OpenFire integrating external databaseOpenFire 集成外部数据库
【发布时间】:2013-07-16 22:08:55
【问题描述】:

您好,我在将现有 OpenFire 安装与现有数据库集成时遇到问题。

我有 2 个数据库(例如)

  1. db_mainsite
  2. db_openfire

在我的 db_mainsite 中,我有一个名为 tbl_user 的表,其中有 2 列,即 gw_userunique 和 gw_password(VARCHAR 255,但使用 SHA-1 哈希算法)。

两个数据库位于同一台机器(服务器)内,因此具有相同的物理位置。

在我的 conf/openfire.xml 我设置了以下几行

<jive>
  ...
  <jdbcProvider>
    <driver>com.mysql.jdbc.Driver</driver>
    <connectionString>jdbc:mysql://localhost/db_mainsite?user=username&amp;password=secret</connectionString>
  </jdbcProvider>
  <provider>
    <auth>
      <className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className>
    </auth>
  </provider>
  <jdbcAuthProvider>
   <passwordSQL>SELECT password FROM tbl_user WHERE gw_userunique=?</passwordSQL>
   <passwordType>sha1</passwordType>
  </jdbcAuthProvider>
  ...
</jive>

可悲的是,每当我尝试使用存储在 db_mainsite 中的用户名 + 密码登录时,它总是失败。

我也重启了 OpenFire。

谁能告诉我怎么了?

干杯,

【问题讨论】:

    标签: mysql database xmpp openfire


    【解决方案1】:

    无需修改配置文件,只需在您的 openfire 数据库中运行脚本(在 3.10.3 中验证):

    ## add jdbc drive
    INSERT INTO `ofproperty` VALUES ('jdbcProvider.driver', 'com.mysql.jdbc.Driver');
    ## external membership database connection 
    INSERT INTO `ofproperty` VALUES ('jdbcProvider.connectionString', 'jdbc:mysql://youripaddress:3306/db_mainsite?user=root&password=root');
    ## auth 
    UPDATE `ofproperty` SET  propValue='org.jivesoftware.openfire.auth.JDBCAuthProvider'  WHERE     NAME='provider.auth.className';
    ## search password
     INSERT INTO `ofproperty` VALUES ('jdbcAuthProvider.passwordSQL', 'SELECT  plainPassword FROM dzmembership WHERE id= ?');
    ## encrypted type:plain,md5,sha1,sha256,sha512
    INSERT INTO `ofproperty` VALUES ('jdbcAuthProvider.passwordType', 'plain');
    ## displyed in admin console
    UPDATE  `ofproperty` SET propValue='org.jivesoftware.openfire.user.JDBCUserProvider' WHERE NAME='provider.user.className';
    ## uyser info in admin console 
    INSERT INTO `ofproperty` VALUES ('jdbcUserProvider.loadUserSQL', 'SELECT username AS NAME,concat(username,''_'',nickname) FROM dzmembership WHERE id=?');
    ## user amount 
    INSERT INTO `ofproperty` VALUES ('jdbcUserProvider.userCountSQL', 'SELECT COUNT(*) FROM dzmembership');
    ## all users 
    INSERT INTO `ofproperty` VALUES ('jdbcUserProvider.allUsersSQL', 'SELECT id FROM dzmembership');
    ## search 
    INSERT INTO `ofproperty` VALUES ('jdbcUserProvider.searchSQL', 'SELECT id FROM dzmembership WHERE');
    ## username displayed in console
    INSERT INTO `ofproperty` VALUES ('jdbcUserProvider.usernameField', 'username');
    ## id  displayed in console
     INSERT INTO `ofproperty` VALUES ('jdbcUserProvider.nameField', 'id');
    ## email displayed in console
    INSERT INTO `ofproperty` VALUES ('jdbcUserProvider.emailField', 'email');
    ##admin username
    INSERT INTO `ofproperty` VALUES ('admin.authorizedJIDs', '13cb2932-e855-4c3e-8e54-a58e0135802d@ipaddress');
    UPDATE ofproperty SET propValue='ipaddress' WHERE NAME='xmpp.domain'
    

    【讨论】:

      猜你喜欢
      • 2011-05-25
      • 1970-01-01
      • 2017-12-04
      • 2016-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-22
      相关资源
      最近更新 更多