XMPP 之Openfire的用户数据库整合(openfire.xml配置参数)

如果手动一步步设置

删除默认,

首先停止正常运行的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


[email protected]


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

时间: 2024-10-10 10:01:34

XMPP 之Openfire的用户数据库整合(openfire.xml配置参数)的相关文章

spring 整合 hibernate xml配置

spring 整合 hibernate: hibernate :对数据库交互 spring: ioc   aop 整合点: 1.sessionFactory对象不再由hibernate生成,交由spring生成,也就是说数据库连接信息   全局配置   映射文件的配置  由spring完成 2.ioc 管理dao对象  baseDao对象 3.aop 事务的控制 步骤: 1.普通工程  copy jar 包 2.配置applicationContext-resource.xml 配置 sessi

jsp采用数据库连接池的方法获取数据库时间戳context.xml配置,jsp页面把时间格式化成自己需要的格式

<?xml version="1.0" encoding="UTF-8"?> <!-- 数据库连接池配置文件 --> <Context> <Resource name="jdbc/ConnectionPool" auth="Application" type="javax.sql.DataSource" username="root" passw

SSH 框架整合(maven版本 xml配置方式)

如何整合Struts2 Hibernate 和Spring 首先你必须了解三个框架是如何独立运行的:代码下载:http://download.csdn.net/detail/zhanglinlang/9775160 Struts2 是通过在web.xml 中 Filter拦截器来启动自己的核心类StrutsPrepareAndExecuteFilter,完成事件的分发. Spring 是通过 在web.xml 注册监听器来监听ContextLoaderListener,监听web应用的启动事件来

你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)

前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的一些问题和解决方法,可点击查看,我们此篇主要介绍的是SQL Server启动过程中关于用户数据库加载的流程,并且根据加载过程中所遇到的一系列问题提供解决方案. 其实SQL Server作为微软的一款优秀RDBMS,它启动的过程中,本身所带的那些系统库发生问题的情况相对还是很少的,我们在平常使用中,出问题的大部分集中于我们自己建立的用户数据库. 而且,相对于侧重面而言,其实我们更关注的是我们自己建立的用户数

SQL Server 2012笔记分享-41:数据库整合建议

数据库整合的原则 如果有多台SQL,并且当前每台SQL的资源利用普遍不高,我们可以针对这些SQL进行整合. ========================================================= 整合方式     1)采用单个服务器多个实例部署.一个实例是一个资源使用和权限控制的边界,安全的边界:如果对权限要求比较高,独立性比较高,则可以考虑这种方式: 2)多个系统的数据库放在一个服务器的一个实例里面,这种方式管理简单:如果同一个业务组的安全管理界限比较模糊,这可以采

SQL一键备份用户数据库

大家都知道,Ms Sql 有自动备份的功能,但如果由于某种原因不能自动备份,或者我们想手动备份的话,就可以用下边的sql语句来执行备份. --------------------代码开始------------- USE [master] ------删除旧数据------------------------------------------------------------- DECLARE @delTime VARCHAR(100) SET @delTime = CONVERT(VARC

Jenkins专有用户数据库加密算法简析

Jenkins访问控制分为:安全域(即认证)与授权策略. 其中,安全域可以采用三种形式,分别为:Jenkins专有用户数据库.LDAP.Servlet容器代理. Jenkins专有用户的数据信息存放位置: <JENKINS_HOME> /users/ 每个用户的相关信息存放在config.xml文件中: <JENKINS_HOME>/users/ <user>/config.xml 在config.xml文件中 passwordHash节点可以看到用户名加密后的密文哈希

10.1 系统数据库和用户数据库

10.1 系统数据库和用户数据库 10.1.1 系统数据库 SQL Server 默认有以下5个系统数据库. ◆ master 数据库 ◆ model 数据库 ◆ msdb 数据库 ◆ Resource 数据库 ◆ tempdb 数据库 10.1.2 用户数据库

转载自搜狐科技【技术那些事儿】LTE网络中的用户数据库HSS与传统2G/3G的HLR有何区别?能否融合组网?

[技术那些事儿]LTE网络中的用户数据库HSS与传统2G/3G的HLR有何区别?能否融合组网? EPS HSS与HLR分别负责4G用户数据和2G/3G用户数据的存储,主要存在的两大不同为: (1)所存储数据不同,包括用户动态信息和静态签约数据,HSS存储用户4G动态信息(如用户4G位置信息),已经用户4G静态签约数据(如用户4G APN及QoS签约数据),HLR存储用户2G/3G动态信息(如用户2G/3G位置信息),以及用户2G/3G静态签约数据(如电信业务签约信息.补充业务业务签约信息.2G/