【问题标题】:how to authenticate users with django ejabberd bridge如何使用 django ejabberd 桥对用户进行身份验证
【发布时间】:2015-08-04 02:12:40
【问题描述】:

我正在尝试将 ejabberd 与 django 身份验证集成。我正在遵循以下说明:https://github.com/ffalcinelli/django-ejabberd-bridge

我已经按照每一步。

我已经定义了验证脚本的路径

{auth_method, external}.
{extauth_program, "script.sh"}. ( I have defined full path here )

脚本文件的内容是:

#!/bin/bash
source <path>/env/bin/activate
python <path>/manage.py ejabberd_auth $@

我的问题是我希望 ejjaberd 维护每个用户的状态(在线、离线、离开等)。我认为每当用户登录(或注销)时,都需要将数据发送到 ejjaberd 服务器。我尝试登录和注销,但这些用户没有在 ejabberd ( localhost:5280/admin ) 上注册

我已经从控制台尝试了这个命令:

python manage.py ejabberd_auth $@

它应该问我用户名和密码。在日志文件中只有一个日志:

2015-08-03 08:11:05,791 [DEBUG] ejabberd_bridge.management.commands.ejabberd_auth: Starting serving authentication requests for eJabberd

如何将用户数据发送到 ejabberd?

【问题讨论】:

    标签: python django ejabberd


    【解决方案1】:

    您期望该身份验证模块提供太多功能。

    django-ejabberd-bridge 的目的是让 ejabberd 根据 Django 身份验证中间件检查身份验证,如项目 README 中所述:

    现在它只允许 ejabberd 服务执行 针对 Django 的身份验证中间件进行身份验证。

    例如,这与改变存在无关。该桥将在该工作流中使用:

    1. 用户想使用 XMPP 客户端登录 ejabberd
    2. ejabberd 使用外部身份验证,因此您的 Django 桥接脚本可以检查用户和凭据是否有效。
    3. ejabberd 使用脚本的结果来接受或拒绝用户身份验证请求。

    就是这样。状态和用户状态仍然像往常一样使用 XMPP 进行管理。当 XMPP 会话打开时,用户将被视为在线。当 XMPP 客户端断开连接时,用户会被 ejabberd 等视为离线。

    用户数据库不重复。它保存在后端服务中。这也是无法从 Web 界面列出用户的原因:ejabberd 不处理它们。

    【讨论】:

    • 用户想使用 XMPP 客户端登录 ejabberd:您是指 ejjaberd 服务器 UI 登录 (localhost:5280/admin) 还是我必须安装单独的包才能启用 XMPP 客户端登录。
    • ejabberd 中有一个统一的身份验证,因此它适用于 XMPP 客户端和 Web 控制台。用户不会被复制并存储在 ejabberd 数据库中。由于这个原因,它们无法从 Web 管理界面显示,因为 ejabberd 无权访问用户列表。它只是根据收到的用户名和凭据查询身份验证服务。
    【解决方案2】:

    如果你只想要用户状态的存在,django-ejabberd-bridge 可以管理它。您可以在 Web 管理界面http://localhost:5280/admin/server/localhost/online-users/ 中看到在线用户。但是在您注册用户时,django-ejabberd-bridge 并没有这样做。如果你想将用户从 django 注册到 XMPP,那么你应该使用 converse.jsstrophe.js 等 javascript 库来查询它。

    我没有尝试使用converse.js 注册用户。 Strophe 提供了名为strophe.register.js 的插件,用于注册用户。

    【讨论】:

      猜你喜欢
      • 2016-09-14
      • 2019-01-10
      • 2020-10-30
      • 2019-03-02
      • 2011-04-29
      • 1970-01-01
      • 2012-08-17
      • 2021-06-02
      • 1970-01-01
      相关资源
      最近更新 更多