如何使用django ejabberd bridge对用户进行身份验证

时间:2015-08-03 08:48:22

标签: python django ejabberd

我正在尝试将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?

2 个答案:

答案 0 :(得分:2)

您希望该验证模块具有太多功能。

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

  

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

这与改变存在感无关。那座桥将用于那个工作流程:

  1. 用户想要使用XMPP客户端登录ejabberd
  2. ejabberd使用外部身份验证,因此您的Django桥接脚本检查用户和凭据是否有效。
  3. ejabberd使用脚本的结果接受或拒绝用户身份验证请求。
  4. 那就是它。 XMPP仍然像往常一样管理状态和用户状态。当XMPP会话打开时,用户将被视为在线。当XMPP客户端断开连接时,用户将被ejabberd等视为脱机

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

答案 1 :(得分:1)

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

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