`
zhongjingquan
  • 浏览: 7203 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

openfire 开源即时消息扩展篇之自定义数据源

阅读更多

       本文档提供了指示为集成Openfire身份验证、用户和组与您的自定义数据库表。这是有用,当您的用户已经有账户在一个外部系统,你不希望重复这些账户在Openfire。简单的集成与定制数据库允许用户身份验证使用他们现有的用户名和密码。您可以加载用户配置文件配置Openfire和组信息从您的自定义数据库。具体的步骤如下:

1:数据源配置

 你需要指定数据源连接驱动和连接url.需要写在openfire/src/conf/openfire.xml

<jive>
  ...
  <jdbcProvider>
    <driver>com.mysql.jdbc.Driver</driver>
    <connectionString>jdbc:mysql://localhost/dbname?user=username&amp;password=secret</connectionString>
  </jdbcProvider>
  ...
</jive>
2:认证集成

 你需要指定认证类,openfire提供了org.jivesoftware.openfire.auth.JDBCAuthProvider类

<jive>
  ...
  <provider>
    <auth>
      <className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className>
    </auth>
  </provider>
  <jdbcAuthProvider>
     <passwordSQL>SELECT password FROM user_account WHERE username=?</passwordSQL>
     <passwordType>plain</passwordType>
   </jdbcAuthProvider>
   ...
  </jive>
其中jdbcAuthProvider.passwordType 支持以下类型:
  1. plain
  2. md5
  3. sha1
  4. sha256
  5. sha512
3:用户信息整合

 你需要指定用户信息加载类,openfire提供了org.jivesoftware.openfire.user.JDBCUserProvider类。完整的配置:

<jive>
  ...
  <provider>
    <auth>
      <className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className>
    </auth>
    <user>
      <className>org.jivesoftware.openfire.user.JDBCUserProvider</className>
    </user>
  </provider>
  <jdbcAuthProvider>
     <passwordSQL>SELECT password FROM user_account WHERE username=?</passwordSQL>
     <passwordType>plain</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>
   ...
 </jive>

 

4:用户组信息整合

 你需要指定用户信息加载类,openfire提供了 org.jivesoftware.openfire.group.JDBCGroupProvider类。完整的配置:

 

<jive>
  ...
  <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 password FROM user_account WHERE username=?</passwordSQL>
     <passwordType>plain</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 myGroups</groupCountSQL>
       <allGroupsSQL>SELECT groupName FROM myGroups</allGroupsSQL>
       <userGroupsSQL>SELECT groupName FROM myGroupUsers WHERE username=?</userGroupsSQL>
       <descriptionSQL>SELECT groupDescription FROM myGroups WHERE groupName=?</descriptionSQL>
       <loadMembersSQL>SELECT username FROM myGroupUsers WHERE groupName=? AND isAdmin='N'</loadMembersSQL>
       <loadAdminsSQL>SELECT username FROM myGroupUsers WHERE groupName=? AND isAdmin='Y'</loadAdminsSQL>
  </jdbcGroupProvider>
  ...
</jive>
5:备注:

在openfire/src/conf/openfire.xml文件中配置好后,需要重置设置openfire安装步骤。在设置安装步骤之前,需要对安装值进行更改,打开文件openfire/src/web/setup/setup-profile-settings.jsp找到:

       if ("default".equals(mode)) {
            // Set to default providers by deleting any existing values.
            @SuppressWarnings("unchecked")
            Map<String,String> xmppSettings = (Map<String,String>)session.getAttribute("xmppSettings");
            xmppSettings.put("provider.auth.className",org.jivesoftware.openfire.auth.DefaultAuthProvider.class.getName());
            xmppSettings.put("provider.user.className",org.jivesoftware.openfire.user.DefaultUserProvider.class.getName());
            xmppSettings.put("provider.group.className", org.jivesoftware.openfire.group.DefaultGroupProvider.class.getName());
            xmppSettings.put("provider.vcard.className", org.jivesoftware.openfire.vcard.DefaultVCardProvider.class.getName());
            xmppSettings.put("provider.lockout.className", org.jivesoftware.openfire.lockout.DefaultLockOutProvider.class.getName());
            xmppSettings.put("provider.securityAudit.className", org.jivesoftware.openfire.security.DefaultSecurityAuditProvider.class.getName());
            xmppSettings.put("provider.admin.className", org.jivesoftware.openfire.admin.DefaultAdminProvider.class.getName());
            // Redirect
            response.sendRedirect("setup-admin-settings.jsp");
            return;
        }
把相应的:provider.auth.className,provider.user.className,provider.group.className三个属性更改为上面你配置的相应类。然后重新开启openfire进行登录http://localhost:9090/跳转到设置。设置成功后,就OK了
分享到:
评论

相关推荐

    基于openfire的android即时通信

    5. 扩展性强:Openfire提供了丰富的API和插件系统,开发者可以轻松扩展功能,如集成企业内部系统、实现自定义认证机制等。 Android客户端开发要点 在Android平台上开发即时通信客户端,主要涉及以下关键技术点: ...

    即时通信openfire功能代码

    Openfire是一款开源、基于Java的即时通信服务器,它使用XMPP(Extensible Messaging and Presence Protocol)协议,这是一种国际标准,被广泛应用于企业级即时通讯系统。 Openfire的主要功能包括: 1. 用户管理:...

    websocket+smack+openfire的的源代码

    WebSocket、Smack 和 Openfire 是三个在实时通信领域中经常使用的开源工具,它们共同构建了一个高效、可扩展的即时通讯(IM)系统。下面将详细解释这三个组件以及它们如何协同工作。 WebSocket 是一种在 Web 上提供...

    Openfire 项目介绍

    开发者和管理员可以通过 Openfire 来搭建和管理自己的即时通讯系统,同时得益于其开源特性,可以根据需求定制功能和扩展性。通过 Openfire,企业可以构建内部的即时通讯网络,同时与其他采用 XMPP 的系统进行无缝...

    openfire Im android 客户端

    Openfire IM Android客户端是一款专为Android平台设计的即时通讯应用,它基于Openfire服务器,提供高效、安全且可自定义的聊天服务。Openfire是一款开源的XMPP服务器,支持多种协议,包括XMPP(Extensible Messaging...

    openfire插件

    Openfire 插件是基于Java开发的开源即时通讯(IM)服务器——Openfire的扩展功能模块。Openfire是一款强大的、跨平台的企业级通讯解决方案,它使用XMPP协议,支持多种客户端,包括桌面应用和移动应用。Openfire插件...

    openfire综合介绍

    Openfire是一个开源的即时通讯(IM)服务器,它基于XMPP(Extensible Messaging and Presence Protocol)协议,该协议使用XML进行消息交换,以实现高度可扩展的通信。XMPP是一种标准化的协议,允许开发者构建即时...

    openfire聊天推送

    Openfire是一款开源的即时通讯服务器,它基于XMPP(Extensible Messaging and Presence Protocol)协议,允许用户进行实时、双向的通信。XMPP是一种基于XML的网络协议,广泛用于即时通讯应用,如聊天、文件传输、...

    openfire 插件开发

    Openfire是一款开源的即时通讯(Instant Messaging, IM)服务器,基于XMPP协议,提供了丰富的API和插件扩展机制,允许开发者创建自定义功能来满足特定需求。 在Openfire中,插件是一种动态加载的代码模块,可以扩展...

    openfire二次开发

    Openfire二次开发是一个深入理解并定制开源即时通讯服务器Openfire的过程。Openfire是一款基于XMPP协议的实时协作服务器,它提供了强大的聊天、会议和文件传输功能。本资料旨在指导开发者如何进行Openfire的定制和...

    OpenFire所有在线用户

    OpenFire是一款开源、基于Java的即时通讯(IM)服务器,它允许企业或组织构建自己的实时通信基础设施。在本文中,我们将深入探讨OpenFire系统及其所有在线用户的管理。 首先,让我们理解"OpenFire所有在线用户"这个...

    openfire离线文件

    Openfire是一款基于Java开发的开源即时通讯服务器,它支持XMPP协议,能够提供高效、稳定的实时通信服务。在Openfire中,离线文件功能是其重要组成部分,允许用户在对方不在线时发送文件,待对方上线后接收。本文将...

    spark+openfire二次开发(三)

    当我们进行二次开发时,可能需要对Spark进行扩展,例如自定义数据源、开发新的算子或优化现有算法。这通常涉及对Spark的源码进行阅读和理解,以便于定位和修改关键部分。同时,对于Openfire,我们可能需要定制插件来...

    openfire 聊天记录插件 archive(java 源码)

    Openfire是一款开源、基于XMPP协议的企业级即时通讯服务器,它允许用户进行实时通信和协作。这个压缩包文件包含了Openfire聊天记录插件的相关源码,对于开发者来说,这是一个宝贵的资源,可以深入理解Openfire如何...

    openfire通讯服务器

    总的来说,Openfire作为一个开源的即时通讯服务器,不仅提供了基本的聊天功能,还具有高度的灵活性和可扩展性,是构建企业内部沟通平台的理想选择。对于初次接触的用户,通过`openfire_4_1_3.exe`进行安装,并结合`....

    国外开源oa(办公系统)源代码

    【压缩包子文件的文件名称列表】:在提供的文件名"openfire"中,OpenFire是一款流行的开源即时通讯服务器软件,通常用于实现企业内部或团队间的实时通信。它可能被集成到这个办公系统中,提供聊天、视频会议等协作...

    openfire_3_9_3.tar.gz

    Openfire是一款开源、基于Java的即时通讯(IM)服务器,它允许企业或组织构建实时通信系统,如聊天、视频会议等。"openfire_3_9_3.tar.gz" 是Openfire 3.9.3版本的源码压缩包,适用于进行深度定制和二次开发。以下是...

    openfire+jwchat

    Openfire是一款开源、基于XMPP协议的即时通讯服务器。XMPP(Extensible Messaging and Presence Protocol)是一种开放标准,用于实时通信和协作。Openfire的主要特点包括: 1. **快速部署**:Openfire提供易于安装...

    spark-openfire一些资料

    Spark是一个基于Java的开源客户端,用于构建实时通信系统,而Openfire是一款基于XMPP协议的服务器端软件,负责处理用户之间的消息传递和管理。这里我们将深入探讨这两个组件以及它们在二次开发中的应用。 1. Spark...

    高仿qq,服务器为openfire

    1. TheClient.rar:这可能包含的是客户端应用程序的源代码,开发者可能使用Java、C#或Android等语言编写,实现用户界面、消息发送接收、登录验证等功能,并且与Openfire服务器进行交互。 2. myplugins.rar:这可能是...

Global site tag (gtag.js) - Google Analytics