openfire 外部用户身份验证

Posted

技术标签:

【中文标题】openfire 外部用户身份验证【英文标题】:openfire external user auth 【发布时间】:2012-04-30 14:58:07 【问题描述】:

我们公司需要将 openfire 用于 xmpp 聊天应用程序,我们希望使用现有的用户表进行身份验证,而不是使用 openfire 中的 ofUser 表。我已经在我们的服务器上安装了 openfire 并将其配置为使用我们的 mysql 数据库并创建了必要的表。我正在尝试遵循找到的自定义数据库集成指南 here

但我无法让它工作。我的配置文件如下(表名略有变化):

<jdbcProvider>
<driver>com.mysql.jdbc.Driver</driver>
<connectionString>jdbc:mysql://localhost/fueledin_winkage?user=fueledin_winkage&amp;password=845Fulton</connectionString>
</jdbcProvider>
<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 users WHERE email=?</passwordSQL>
    <passwordType>md5</passwordType>
</jdbcAuthProvider>
<jdbcUserProvider>
    <loadUserSQL>SELECT email,email FROM users WHERE email=?</loadUserSQL>
    <userCountSQL>SELECT COUNT(*) FROM users</userCountSQL>
    <allUsersSQL>SELECT email FROM users</allUsersSQL>
    <searchSQL>SELECT email FROM users WHERE</searchSQL>
    <usernameField>email</usernameField>
    <nameField>email</nameField>
    <emailField>email</emailField>
</jdbcUserProvider>
<setup>true</setup>

这是一种奇怪的设置,因为用户可以在使用电子邮件登录时更改他们的用户名。有人可以解释我可能做错了什么吗,我尝试使用用户表中的用户登录服务器,但没有运气。另外,在浏览器中运行设置向导后,我将配置脚本编辑为如上所示,现在每次我进入浏览器工具时,它都会要求我再次运行设置向导,即使我再次运行它仍然会询问然后。任何帮助都提前感谢。

【问题讨论】:

只是想知道,您是否启动并运行了它。我很想知道它是如何工作的,因为我目前面临着同样的问题。干杯... 【参考方案1】:

您必须在 openfire 的管理界面中设置参数。这将为您完成工作。

如果您想在数据库中执行此操作,请使用表 ofProperty ;)

编辑:

像这样:

在系统属性(在服务器管理器中)中将所有 XML 节点更改为类似 node.subnode 的属性名称。

例如:

<provider>
  <auth>
    <className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className>
  </auth>
  <user>
    <className>org.jivesoftware.openfire.user.JDBCUserProvider</className>
  </user>
</provider>

将会

provider.auth.className
provider.user.className

属性值相同,例如provider.auth.className 的值为 org.jivesoftware.openfire.auth.JDBCAuthProviderprovider.user.className 的值为 org.jivesoftware.openfire.user.JDBCUserProvider

【讨论】:

您能详细描述一下吗?谢谢

以上是关于openfire 外部用户身份验证的主要内容,如果未能解决你的问题,请参考以下文章

OpenFire:在 IQHandler 中,如何获取发送它的经过身份验证的用户?

Openfire 服务器:使用令牌而不是用户名/密码进行身份验证

Jabber Openfire 服务器 v3.6.0a+ - 如何使用混合身份验证?

与外部用户的身份验证失败

Laravel 5 通过外部 API 对用户进行身份验证

如何在本地 IdentityContext 中注册从外部身份验证提供程序获得的用户