Ubuntu 16.04 上 Ejabberd extauth 設定

Ejabberd 支援通過執行外部程式自定義外部認證邏輯,ejabberd 的網頁上提供了一些第三方程式碼可供參考。詳細的說明在 ejabberd Developers Guide.

以 ejabberd Developers Guide 中提供的 python 範例為基礎進行改進,首先修改 python 版本為 python3。

修改為

對於 python3 不同於 python2 的部分做如下修改:

修改為

之後可對auth(), isuser(), setpass()做改動以適應自己的認證邏輯。其中isuser()setpass()可以保留return True.

最後將修改好的檔案丟去/etc/ejabberd/extauth.py,修改 owner 為ejabberd,添加執行權限。

/etc/ejabberd/ejabberd.yml找到auth_method: internal修改為:

在其下方增加:

通過ejabberdcctl重新啟動ejabberd使設定生效。

 

若出現extauth script has exitted abruptly with reason 'normal',在排除檔案 owner 和執行權限有誤的情況下,可能為apparmor所致(帶有 SELinux 的作業系統中可能為 SELinux 所致,可以通過sudo setenforce 0臨時關閉 SELinux 測試),查看/var/log/syslog可看到相關 log。

臨時解決方法是移除apparmor.

 

CC BY-NC-SA 4.0 Ubuntu 16.04 上 Ejabberd extauth 設定 by kinosang is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

發表迴響