ejabberd - Конфигурация mod_http_api
Я нахожусь в процессе тестирования mod_http_api, чтобы заменить существующее использование mod_rest в нашей реализации.
Я могу ограничить доступ к некоторым командам из группы IP-адресов, используя опцию "admin_ip_access". Я могу успешно выполнить некоторые команды (например, 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. Вызов API с хоста, который не указан в admin_ip_acl
также успешно, где я ожидаю получить ошибку при вызове хоста без белого
1 ответ
API требует токен OAuth для аутентификации. Вы должны сгенерировать один с правильной областью действия. Если команда ограничена администратором, вам также необходимо передать заголовок HTTP: "X-Admin: true", чтобы ejabberd узнал, что он должен считать вас администратором.