• XMPP 之Openfire的用户数据库整合


    openfire\documentation下的文档有比较详细的信息

    如果手动一步步设置

    删除默认,

    首先停止正常运行的Openfire服务器

    默认的库ofProperty的如下记录删除

    provider.auth.classname

    provider.user.classname

    provider.group.classname

    建立一个第三方的表

    CREATE TABLE myUser (

    username NVARCHAR(64) NOT NULL,

    plainPassword NVARCHAR(32),

    encryptedPassword NVARCHAR(255),

    name NVARCHAR(100),

    email VARCHAR(100),

    creationDate CHAR(15) NOT NULL,

    modificationDate CHAR(15) NOT NULL,

    CONSTRAINT ofUser_pk PRIMARY KEY (username)

    );

    CREATE INDEX ofUser_cDate_idx ON myUser (creationDate ASC);

    CREATE TABLE myGroupUser (

    groupName NVARCHAR(50) NOT NULL,

    username NVARCHAR(100) NOT NULL,

    administrator INTEGER NOT NULL,

    CONSTRAINT ofGroupUser_pk PRIMARY KEY (groupName, username, administrator)

    );

    CREATE TABLE myGroup (

    groupName NVARCHAR(50) NOT NULL,

    description NVARCHAR(255),

    CONSTRAINT ofGroup_pk PRIMARY KEY (groupName)

    );

    密码加密方式:

    plain md5 sha1 sha256 sha512

    密码采用明文:

    <passwordSQL>SELECT plainPassword FROM myUser WHERE username=?</passwordSQL>

    <passwordType>palin</passwordType>

    密码采用HASH

    <passwordSQL>SELECT encryptedPassword FROM myUser WHERE username=?</passwordSQL>

    <passwordType>sha256</passwordType>

    如下是一个myUser 中admin数据[myUser 插入admin/**数据,必须有一个,否则再次启动时使用这个验证时就没法登录]

    admin

    admin

    8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

    admin

    Admin@demo.com

    2011-1-1      

    2011-1-1      

    配置文件

    openfire.xml 加入如下内容

    <!-- Use Custome Database for user/group

      openfire_src/documentation/docs :: db-integration-guide.html database.html database-guide.html

    -->

      <jdbcProvider>

        <!--

        <driver>com.mysql.jdbc.Driver</driver> 

        <connectionString>jdbc:mysql://localhost:3306/of?user=root&amp;password=</connectionString>

    -->

        <![CDATA[ SQL SERVER驱动 jtds.sourceforge.net/faq.html ]]>

        <driver>net.sourceforge.jtds.jdbc.Driver</driver>

        <connectionString>jdbc:jtds:sqlserver://localhost/cust;appName=cust;user=of;password=of</connectionString>

      </jdbcProvider>

      <admin/>

      <provider>

        <auth>

          <className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className>

        </auth>

        <user>

          <className>org.jivesoftware.openfire.user.JDBCUserProvider</className>

        </user>

        <group>

          <className>org.jivesoftware.openfire.group.JDBCGroupProvider</className>

        </group>

      </provider>

      <jdbcAuthProvider>

        <passwordSQL>SELECT plainPassword FROM myUser WHERE username=?</passwordSQL>

        <passwordType>palin</passwordType>

      </jdbcAuthProvider>

      <jdbcUserProvider>

        <loadUserSQL>SELECT name,email FROM myUser WHERE username=?</loadUserSQL>

        <userCountSQL>SELECT COUNT(*) FROM myUser</userCountSQL>

        <allUsersSQL>SELECT username FROM myUser</allUsersSQL>

        <searchSQL>SELECT username FROM myUser WHERE</searchSQL>

        <usernameField>username</usernameField>

        <nameField>name</nameField>

        <emailField>email</emailField>

      </jdbcUserProvider>

      <jdbcGroupProvider>

        <groupCountSQL>SELECT count(*) FROM myGroup</groupCountSQL>

        <allGroupsSQL>SELECT groupName FROM myGroup</allGroupsSQL>

        <descriptionSQL>SELECT groupDescription FROM myGroup WHERE groupName=?</descriptionSQL>

        <userGroupsSQL>SELECT groupName FROM myGroupUser WHERE username=?</userGroupsSQL>

        <loadMembersSQL>SELECT username FROM myGroupUser WHERE groupName=? AND isAdmin='N'</loadMembersSQL>

        <loadAdminsSQL>SELECT username FROM myGroupUser WHERE groupName=? AND isAdmin='Y'</loadAdminsSQL>

      </jdbcGroupProvider>

    启动

    再次启动后,使用admin可以登录进去

    默认的数据库的[ofProperty]内容从配置文件导入了,openfire.xml恢复原来的形式,查看ofProperty

    name

    propValue

       

    jdbcAuthProvider.passwordSQL

    SELECT plainPassword FROM myUser WHERE username=?

    jdbcAuthProvider.passwordType

    plain

    jdbcGroupProvider.allGroupsSQL

    SELECT groupName FROM myGroup

    jdbcGroupProvider.descriptionSQL

    SELECT groupDescription FROM myGroup WHERE groupName=?

    jdbcGroupProvider.groupCountSQL

    SELECT count(*) FROM myGroup

    jdbcGroupProvider.loadAdminsSQL

    SELECT username FROM myGroupUser WHERE groupName=? AND isAdmin='Y'

    jdbcGroupProvider.loadMembersSQL

    SELECT username FROM myGroupUser WHERE groupName=? AND isAdmin='N'

    jdbcGroupProvider.userGroupsSQL

    SELECT groupName FROM myGroupUser WHERE username=?

    jdbcProvider.connectionString

    jdbc:jtds:sqlserver://localhost/cust;appName=cust;user=of;password=of

    jdbcProvider.driver

    net.sourceforge.jtds.jdbc.Driver

    jdbcUserProvider.allUsersSQL

    SELECT username FROM myUser

    jdbcUserProvider.emailField

    email

    jdbcUserProvider.loadUserSQL

    SELECT name,email FROM myUser WHERE username=?

    jdbcUserProvider.nameField

    name

    jdbcUserProvider.searchSQL

    SELECT username FROM myUser WHERE

    jdbcUserProvider.userCountSQL

    SELECT COUNT(*) FROM myUser

    jdbcUserProvider.usernameField

    username

    provider.auth.className

    org.jivesoftware.openfire.auth.JDBCAuthProvider

    provider.group.className

    org.jivesoftware.openfire.group.JDBCGroupProvider

    provider.user.className

    org.jivesoftware.openfire.user.JDBCUserProvider

  • 相关阅读:
    Mysql简单使用
    yum与rpm常用选项
    vim常用配置
    Python模块安装方式
    VirtualBox新建虚拟机常用配置
    Linux中单引号与双引号区别
    etc/profile /etc/bashrc ~/.bash_profile ~/.bashrc等配置文件区别
    virtualenv简单使用
    SqlDataSource学习笔记20091111:ConflictDetection属性
    TreeView学习笔记20091114:遍历树(叶子节点设置多选框)并设置展开级别
  • 原文地址:https://www.cnblogs.com/2018/p/2279869.html
Copyright © 2020-2023  润新知