`

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

分享到:
评论

相关推荐

    [经典]Openfire整合现有用户

    在企业环境中,通常需要将Openfire与现有的用户管理系统进行整合,以便利用已有的用户数据,如LDAP(轻量级目录访问协议)或数据库中的用户信息。本文将详细介绍如何将Openfire与现有的用户资源进行整合,并扩展其...

    openfire扩展整合现有系统用户

    标题中的“openfire扩展整合现有系统用户”是指在Openfire这款开源即时通讯服务器上,将已有的用户系统(如企业内部的LDAP、AD等)与Openfire进行集成,实现用户身份验证和管理的一体化。Openfire是一款基于Java开发...

    android 基于openfire服务器搭建的xmpp即时聊天客户端

    - Openfire还支持与外部系统集成,如LDAP身份验证、数据库存储用户数据等。 3. **Android客户端开发** - 在Android上实现XMPP聊天客户端,需要一个兼容Android的XMPP库。在这种情况下,我们使用了**ASMACK**。 -...

    openfire3.10.0

    Openfire是一款XMPP(Extensible Messaging and Presence Protocol)服务器,它支持实时通信、群聊、文件传输、用户状态管理等基本IM功能。XMPP是一种基于XML的开放标准协议,被广泛应用于聊天软件和企业协作系统。 ...

    基于openfire + jwchat 的 WEB IM

    3. **配置文件**:包括Openfire服务器的配置信息,可能还有数据库连接参数等。 4. **资源文件**:如图片、图标和其他静态内容,用于增强用户体验。 **集成过程:** 1. **安装和配置Openfire**:首先,需要在服务器...

    openfire 安装文件及详细安装教程

    Openfire还支持与其他XMPP服务器的互操作性,方便整合现有的IM系统。 此外,Openfire提供了丰富的API和插件系统,允许开发人员自定义功能,如监控、审计、集成第三方应用等。确保定期更新Openfire至最新版本,以...

    openfire缺少的jar包合集

    2. **数据库连接驱动**:Openfire支持多种数据库,如MySQL、PostgreSQL等,对应的数据库连接驱动jar包是必须的,用于建立和管理数据库连接。 3. **认证与授权库**:Openfire支持LDAP、JDBC等多种认证机制,对应的...

    openfire_3_10_2.tar.gz

    Openfire是一款开源、基于XMPP协议的即时通讯服务器,它允许用户通过互联网进行实时通信。本文将围绕"openfire_3_10_2.tar.gz"这一压缩包文件,详细讲解如何使用Openfire搭建高效、安全的在线聊天平台,并结合Red5和...

    精典源码之AdXmpp(Openfire+asmack+spark).rar

    【标题】"精典源码之AdXmpp(Openfire+asmack+spark)" 提供的是一个关于XMPP协议实现的开源项目,其中涉及到的主要组件包括Openfire服务器、asmack库以及Spark客户端。这个压缩包文件是对于学习和研究XMPP通信协议...

    openfire_3_9_3.tar.gz

    1. **Openfire架构**:Openfire采用XMPP(Extensible Messaging and Presence Protocol)协议,这是一个强大的、灵活的、基于XML的即时通讯协议。Openfire服务器处理客户端之间的消息传递、用户在线状态管理以及群组...

    openfire3.9 2.1所需jar包

    这些jar包可能包含了Openfire运行和构建过程中的依赖,例如数据库连接驱动、XMPP协议处理、加密算法支持等。由于官方提供的jar包不全,开发者需要自行寻找并添加这些缺失的依赖,以确保项目的顺利进行。 Java的jar...

    安卓Android源码——AdXmpp(Openfire+asmack+spark).zip

    AdXmpp项目是针对这一需求的一个开源解决方案,它整合了Openfire服务器、asmack库和spark客户端,构建了一个高效且可靠的XMPP(Extensible Messaging and Presence Protocol)通信框架。下面我们将详细探讨这些组件...

    openfire4.2.2 开发所需jar包,含smack jar包及所有辅助包,省去找包烦恼

    Smack库是Openfire开发的核心组件之一,它提供了丰富的API,允许开发者轻松地创建XMPP客户端或服务器端程序。Smack 4.2.2版本可能引入了新的特性、修复了已知问题,以提高性能和兼容性。例如,它可能包含了更安全的...

    openfire安装配置部署提供Windows系统和linux系统安装配置以及管理员控制台API接入

    Openfire 还允许你自定义集成,比如与你现有的用户系统整合,确保用户认证的一致性。此外,Openfire 提供的 UserService 接口详细说明可以帮助开发者更好地理解和利用用户管理功能。 至于 Spark,这是一个与 ...

    访qq客户端

    2. **认证与授权**:Openfire支持多种身份验证机制,如内置数据库、LDAP、Active Directory等,确保用户安全登录。 3. **多用户聊天(MUC)**:Openfire提供了创建和管理群聊的功能,用户可以加入或创建聊天室进行...

    OpenfireChatClient

    OpenfireChatClient是一个基于XMPP(Extensible Messaging and Presence Protocol)协议的即时通讯客户端,它整合了Smack库和Spark客户端,为用户提供了一个功能丰富的通信平台。在这个系统中,Smack作为底层的XMPP...

    企业级即时通信系统的开源解决方案参考.pdf

    2. 系统分析:基于需求,选择合适的开源组件,如Java作为开发语言,Smack API作为XMPP协议的Java库,Openfire作为服务器,MySQL作为后台数据库。 3. 详细设计:设计系统的架构,包括模块划分、接口定义、数据结构等...

    【整理】解刨AndroidPN消息推送.pdf

    在整合AndroidPN服务器到现有项目时,需要考虑与项目本身Spring环境的整合,有时候需要修改源代码以适应项目环境。由于AndroidPN服务器对jetty的使用是绑定的,若不使用jetty,也需要对源代码进行改造。开发者在使用...

    coherence.jar-coherence-work.jar-tangosol.jar-

    这意味着Openfire的开发者可能已经配置了Coherence来优化其数据库交互,例如缓存用户会话信息、聊天记录或者其他重要的通信元数据。 总的来说,这三个JAR文件在Openfire中扮演的角色是提供一个强大的分布式数据管理...

    fastpath_webchat_war

    Fastpath-Webchat与openfire的集成,意味着它也支持XMPP协议,能够实现用户间的实时文本、语音甚至视频交流。 4. **编译打包过程**:2017年5月4日编译打包,意味着在这个日期前,开发人员完成了代码编写、测试,并...

Global site tag (gtag.js) - Google Analytics