ejabberd - mod_http_api的配置

时间:2016-09-01 11:53:11

标签: oauth ejabberd ejabberd-module ejabberd-api

我正在测试mod_http_api以替换我们实现中mod_rest的现有用法。

我可以使用选项“admin_ip_access”取消对来自IP地址组的某些命令的访问。我可以成功执行一些命令(例如change_password)。

但是,在某些情况下,我们可能还要求用户(自己)和管理员(自己和其他用户)登录。

然而,当我尝试使用Basic Auth登录时。这不成功。我继续得到以下内容。如果我的假设是正确的,这可能与配置有关。

如果有人能告诉我应该如何正确配置,将不胜感激。

{
  "status": "error",
  "code": 31,
  "message": "Command need to be run with admin priviledge."
}

当前配置

modules:
  mod_http_api:
    admin_ip_access: admin_ip_access_rule

acl:
  admin_ip_acl:
     ip:
       - "xx.xx.xx.xx/32"

access:
  admin_ip_access_rule:
    admin_ip_acl:
       - all

修改

出于测试目的,我启用了以下配置:

commands_admin_access: configure
commands:
  - add_commands:
     - status
     - get_roster
     - change_password
     - register
     - unregister
     - registered_users
     - muc_online_rooms
     - oauth_issue_token

我能够成功运行add_commands标记内列出的命令的用户和管理员命令。它按预期工作。但是,我仍然面临一些问题,大多数与IP限制有关。从admin_ip_acl中未列出的主机调用API也很成功,我希望在调用非白名主机时出现错误

1 个答案:

答案 0 :(得分:0)

API需要OAuth令牌进行身份验证。您需要生成具有正确范围的一个。当命令仅限于管理员时,您还需要传递HTTP标头:“X-Admin:true”让ejabberd知道它应该考虑您想要充当管理员。