openfire自定义数据库集成指南(中文版)

该文档是由Openfire官方文档翻译而来。官方文档文档链接:添加链接描述
简介
本文档提供有关将Openfire身份验证,用户和组与自定义数据库表集成的说明。 当您的用户已在外部系统中拥有帐户并且您不希望在Openfire中复制这些帐户时,此功能非常有用。 如果您的用户信息可通过LDAP目录而非自定义数据库表获得,请参阅LDAP指南。
与自定义数据库的简单集成允许用户使用现有的用户名和密码进行身份验证。 (可选)您可以将Openfire配置为从自定义数据库加载用户配置文件和组信息。 Openfire中的任何组都可以指定为共享组,这意味着您可以使用组预先填充用户的名单。
背景
集成要求您输入自定义数据库查询以访问数据库。 您需要熟悉数据库表结构和简单的SQL。 您的自定义数据库可以是与Openfire数据库不同的服务器上的不同数据库 - 您将在配置中输入数据库连接信息。
配置
为了将服务器配置为与自定义数据库表集成:

  1. 停止Openfire。
  2. 使用您喜欢的编辑器编辑Openfire安装文件夹中的conf / openfire.xml,如下所述。
    a) 重启Openfire。
    b) 数据库连接设置
    您必须为数据库和JDBC驱动程序指定连接字符串。
    jdbcProvider.driver:用于连接到自定义数据库的JDBC驱动程序的类名。 驱动程序也必须位于Openfire类路径中(例如,将其放入Openfire安装的“lib /”目录中。有关主要数据库的常用驱动程序名称,请参阅数据库指南。
    jdbcProvider.connectionString:数据库的完整连接字符串。 有关语法,请参阅数据库驱动程序文档。 警告:连接字符串通常包含“&”字符。 该字符在XML中具有特殊含义,因此您应该使用“&”来转义它。
    下面是一个示例配置文件部分(注意:示例中的“…”部分表示配置文件的其余部分将存在的区域):
<jive>
  ...
  <jdbcProvider>
    <driver>com.mysql.jdbc.Driver</driver>
    <connectionString>jdbc:mysql://localhost/dbname?user=username&amp;password=secret</connectionString>
  </jdbcProvider>
  ...
</jive>

身份认证集成

与自定义外部数据库最简单的集成是身份验证集成。 使用以下设置启用身份验证集成。
provider.auth.className:将值设置为org.jivesoftware.openfire.auth.JDBCAuthProvider。
jdbcAuthProvider.passwordSQL:用于选择用户密码的SQL字符串。 SQL语句应该包含单个“?” 字符,在执行时将用用户名动态替换。
jdbcAuthProvider.passwordType:密码的类型。
有效值及含义如表1所示。
表1 密码的类型
密码类型有效值 含义
Plain 密码以纯文本形式存储
Md5 密码存储为十六进制编码的MD5哈希
Sha1 密码存储为十六进制编码的SHA-1哈希
Sha256 密码存储为十六进制编码的SHA-256哈希
Sha512 密码存储为十六进制编码的SHA-512哈希
如果未设置此值,则假定密码类型为plain。
以下是配置文件示例部分:

<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>

您很可能希望更改哪些用户名被授权登录管理控制台。 默认情况下,只允许用户名为“admin”的用户登录。 但是,您可能在LDAP目录中拥有不同的用户,您希望成为管理员。 授权用户名列表通过admin.authorizedUsernames属性进行控制。 例如,要让用户名“joe”和“jane”登录管理控制台:

<jive>
      ...
      <admin>
        ...
        <authorizedUsernames>joe, jane</authorizedUsernames>
      </admin>
      ...
    </jive>

另一种选择是使用AdminProvider。 AdminProvider实例负责动态列出管理员用户。 默认使用先前解释的authorizedUsernames设置。 JDBCAdminProvider允许从SQL查询中列出管理员。 例如:

<jive>
  ...
  <provider>
    ...
    <admin>
      <className>org.jivesoftware.openfire.admin.JDBCAdminProvider</className>
    </admin>
    ...
  </provider>
  <jdbcAdminProvider>
    <getAdminsSQL>SELECT userid FROM user_account WHERE administrator='Y'</getAdminsSQL>
  </jdbcAdminProvider>
  ...
</jive>

用户集成
(可选)Openfire可以从您的自定义数据库加载用户数据。 如果启用用户集成,则还必须启用身份验证集成(请参见上文)。 使用以下设置启用用户集成。
provider.user.className:将值设置为org.jivesoftware.openfire.user.JDBCUserProvider。
jdbcUserProvider.loadUserSQL: 用于在给定用户名的情况下加载用户的名称和电子邮件地址(按此顺序)的SQL语句。 SQL语句应该包含单个“?” 字符,在执行时将用用户名动态替换。
jdbcUserProvider.userCountSQL: 用于加载数据库中用户总数的SQL语句。
jdbcUserProvider.allUsersSQL: 用于加载数据库中所有用户名的SQL语句。
jdbcUserProvider.searchSQL: 用于在数据库中搜索用户的SQL语句片段。 该语句应以“WHERE”结尾 - 用户名,姓名和电子邮件字段将根据搜索动态附加到语句。 如果未设置此值,则不会启用搜索。
usernameField: 用户名数据库字段的名称,将用于搜索。
nameField: 名称数据库字段的名称,将用于搜索。
emailField: 将用于搜索的电子邮件数据库字段的名称。
下面是一个示例配置文件部分。 请注意,单个提供程序部分必须包括应配置的所有提供程序:

<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>

组集成
Openfire可以从您的自定义数据库加载组数据。 如果启用组集成,则还必须启用身份验证集成; 你也可能想要启用用户集成(见上文)。 使用以下设置启用组集成。
provider.group.className: 将值设置为org.jivesoftware.openfire.group.JDBCGroupProvider。
jdbcGroupProvider.groupCountSQL:用于加载数据库中组总数的SQL语句。
jdbcGroupProvider.allGroupsSQL:用于加载数据库中所有组的SQL语句。
jdbcGroupProvider.userGroupsSQL:用于加载特定用户的所有组的SQL语句。 SQL语句应该包含单个“?” 字符,在执行时将用用户名动态替换。
jdbcGroupProvider.descriptionSQL:用于加载组描述的SQL语句。 SQL语句应该包含单个“?” 字符,在执行时将被组名称动态替换。
jdbcGroupProvider.loadMembersSQL:用于加载组中所有成员的SQL语句。 SQL语句应该包含单个“?” 字符,在执行时将被组名称动态替换。
jdbcGroupProvider.loadAdminsSQL:用于加载组中所有管理员的SQL语句。 SQL语句应该包含单个“?” 字符,在执行时将被组名称动态替换。
下面是一个示例配置文件部分。 请注意,单个提供程序部分必须包括应配置的所有提供程序:

<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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值