【问题标题】:How to get multi-user chat room access control list from external auth on ejabberd如何从 ejabberd 上的外部身份验证获取多用户聊天室访问控制列表
【发布时间】:2012-01-19 21:55:34
【问题描述】:

我已经使用 external_auth 设置了 ejabberd,以针对我的 Web 应用程序的用户数据库进行身份验证。我想要的是能够为网站版主创建一个 MUC(聊天室),并自动将这些用户添加到聊天中,排除所有其他用户。

最终,我还希望能够将我网站的群组功能映射到 ejabberd 中的 MUC。

ejabberd的外部认证API似乎没有提供细粒度的访问控制,基本上只允许查询用户是否注册以及用户名/密码组合是否成功认证用户。

我看到的关于 MUC 的 acl 的唯一参考是这里: http://www.ejabberd.im/aclpopulate 但这似乎需要通过 webadmin 界面设置权限。

有没有办法通过外部身份验证自动执行此操作?

【问题讨论】:

    标签: erlang ejabberd


    【解决方案1】:

    要回答我自己的问题,使用外部身份验证似乎无法满足我的需要。 我最终将 ejabberd 命令集成到我的 web 应用程序的用户/组生命周期中,这比我预期的要快,并且比使用外部身份验证快了无数倍(我使用 ejabberd 的内部用户数据库,使用 ejabberdctl创建用户、更新密码、在共享名册中添加和删除以及创建 muc)。

    为了帮助完成这个过程,我为 ejabberdctl 创建了一个 PHP 包装器,它可以在 github 上免费获得:

    https://github.com/tomlancaster/Ejabberd-Wrapper-PHP

    请随意使用和滥用它。

    【讨论】:

      【解决方案2】:

      如果您有自己的身份验证模块,那么您可以重定向 ejabberd 的身份验证过程。在 ejabberd_auth.erl 文件中通过修改 check_password_with_authmodule/3 和 check_password_with_authmodule/5 两个函数来重定向认证。当这两个函数返回时,从您的身份验证模块返回术语。

      如果您的身份验证模块在不同的机器上,请建立一个套接字连接以与您的身份验证模块进行通信并获取结果并将结果返回给 check_password_with_authmodul 函数。

      在此更改后重建 ejabberd 并启动。

      【讨论】:

      • 这与我已经在使用的简单地使用外部身份验证有何不同?身份验证不是问题; acl 是。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-22
      • 1970-01-01
      • 2011-08-10
      • 2013-10-03
      • 2015-07-29
      • 2015-10-03
      • 1970-01-01
      相关资源
      最近更新 更多