2011-12-14 102 views
0

從外部認證獲得多用戶聊天室的訪問控制列表有ejabberd設置使用external_auth反對我的web應用程序的用戶數據庫進行身份驗證。我希望能夠爲網站管理員創建一個MUC(聊天室),並自動將這些用戶添加到聊天中,以排除所有其他用戶。我如何在ejabberd

最後,我也想能夠在ejabberd也映射我的網站羣功能MUC的。

ejabberd的外部認證API似乎沒有提供細粒度的訪問控制,基本上只允許您查詢用戶是否註冊以及用戶名/密碼組合是否成功驗證用戶。

我已經看到了ACL對MUC是唯一的參考是在這裏: http://www.ejabberd.im/aclpopulate 但這似乎需要通過WebAdmin的接口設置權限。

有沒有辦法從外部auth自動做到這一點?

回答

2

要回答我自己的問題,似乎不可能通過使用外部認證來做我需要的。 我最終將ejabberd命令集成到我的web應用程序的用戶/組生命週期中,這比我預期的要快,並且比使用外部auth快了數十億倍(我使用ejabberd的內部用戶數據庫,使用ejabberdctl創建用戶,更新密碼,添加和從共享名冊中刪除並創建muc)。

爲了幫助這個過程我創建了一個ejabberdctl PHP包裝物,在GitHub上免費提供:

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

請隨時爲你想使用和濫用它。

0

如果你有自己的認證模塊,在這種情況下,你可以重定向ejabberd的認證過程。在ejabberd_auth.erl文件中,通過修改check_password_with_authmodule/3和check_password_with_authmodule/5兩個函數來重定向認證。這兩個函數返回時,從您的身份驗證模塊返回該術語。

如果認證模塊是輸精管的機器,做一個套接字連接與您的身份驗證模塊進行通信,並得到結果,並給出結果返回給check_password_with_authmodul功能。

在此改變重建ejabberd並開始。

+0

這與僅僅使用外部認證有什麼不同?認證不是問題; acl的。 – TomL 2011-12-15 10:06:26