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/**数据,必须有一个,否则再次启动时使用这个验证时就没法登录]

adminadmin8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918adminAdmin@demo.com2011-1-12011-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

namepropValue
  
jdbcAuthProvider.passwordSQLSELECT plainPassword FROM myUser WHERE username=?
jdbcAuthProvider.passwordTypeplain
jdbcGroupProvider.allGroupsSQLSELECT groupName FROM myGroup
jdbcGroupProvider.descriptionSQLSELECT groupDescription FROM myGroup WHERE groupName=?
jdbcGroupProvider.groupCountSQLSELECT count(*) FROM myGroup
jdbcGroupProvider.loadAdminsSQLSELECT username FROM myGroupUser WHERE groupName=? AND isAdmin=’Y’
jdbcGroupProvider.loadMembersSQLSELECT username FROM myGroupUser WHERE groupName=? AND isAdmin=’N’
jdbcGroupProvider.userGroupsSQLSELECT groupName FROM myGroupUser WHERE username=?
jdbcProvider.connectionStringjdbc:jtds:sqlserver://localhost/cust;appName=cust;user=of;password=of
jdbcProvider.drivernet.sourceforge.jtds.jdbc.Driver
jdbcUserProvider.allUsersSQLSELECT username FROM myUser
jdbcUserProvider.emailFieldemail
jdbcUserProvider.loadUserSQLSELECT name,email FROM myUser WHERE username=?
jdbcUserProvider.nameFieldname
jdbcUserProvider.searchSQLSELECT username FROM myUser WHERE
jdbcUserProvider.userCountSQLSELECT COUNT(*) FROM myUser
jdbcUserProvider.usernameFieldusername
provider.auth.classNameorg.jivesoftware.openfire.auth.JDBCAuthProvider
provider.group.classNameorg.jivesoftware.openfire.group.JDBCGroupProvider
provider.user.classNameorg.jivesoftware.openfire.user.JDBCUserProvider
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值