我正在测试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也很成功,我希望在调用非白名主机时出现错误
答案 0 :(得分:0)
API需要OAuth令牌进行身份验证。您需要生成具有正确范围的一个。当命令仅限于管理员时,您还需要传递HTTP标头:“X-Admin:true”让ejabberd知道它应该考虑您想要充当管理员。