首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

XMPP 之Openfire的用户数据库调整

2013-07-01 
XMPP 之Openfire的用户数据库整合openfire\documentation下的文档有比较详细的信息如果手动一步步设置删除

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

热点排行