Python 如何使用django-ejabberd桥对用户进行身份验证

Python 如何使用django-ejabberd桥对用户进行身份验证,python,django,ejabberd,Python,Django,Ejabberd,我正在尝试将ejabberd与django身份验证集成。我遵照以下指示: 我每走一步都跟着走 我已经定义了用于身份验证的脚本路径 {auth_method, external}. {extauth_program, "script.sh"}. ( I have defined full path here ) 脚本文件的内容是: #!/bin/bash source <path>/env/bin/activate python <path>/manage.py ejab

我正在尝试将ejabberd与django身份验证集成。我遵照以下指示:

我每走一步都跟着走

我已经定义了用于身份验证的脚本路径

{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 $@
它应该问我用户名和密码。日志文件中只有一个日志:

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

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

您对该身份验证模块的功能要求过高

django-ejabberd桥的目的是让ejabberd根据django身份验证中间件检查身份验证,如项目自述:

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

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

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


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

    如果您只想显示用户状态,django-ejabberd桥可以管理它。您可以在web管理界面中看到在线用户。但就注册用户而言,django-ejabberd桥不能做到这一点。如果您想将用户从django注册到XMPP,那么应该使用javascript库进行查询,如,等等


    我还没有尝试使用注册用户。Strophe提供了用于注册用户的插件。

    用户想要使用XMPP客户端登录ejabberd:您是指ejabberd服务器UI登录(localhost:5280/admin),还是我必须安装单独的包才能启用XMPP客户端登录。ejabberd中有一个统一的身份验证,因此,它同时适用于XMPP客户端和web控制台。用户不会被复制并存储在ejabberd数据库中。因此,它们不能从web管理界面显示,因为ejabberd无权访问用户列表。它只是根据需要根据收到的用户名和凭证查询身份验证服务。
    2015-08-03 08:11:05,791 [DEBUG] ejabberd_bridge.management.commands.ejabberd_auth: Starting serving authentication requests for eJabberd