2017-05-31 87 views
-1

我試圖訪問ejabberd REST API無需驗證,但總是與這個身體403 Forbidden響應:ejabberd休息API無需驗證,403禁止(錯誤代碼32)

{ 
    "status": "error", 
    "code": 32, 
    "message": "AccessRules: Account does not have the right to perform the operation." 
} 

我不能讓一個OK響應在/api/status端點上,這是127.0.0.1所有用戶都應該能夠使用的命令(請參閱ejabberd.yml中的api_permissions下的「公共命令」部分)。

這裏的請求的詳細信息(通過失眠REST客戶端):

> POST /api/status HTTP/1.1 
> User-Agent: insomnia/5.1.0 
> Host: localhost:5280 
> Accept: */* 
> Accept-Encoding: deflate, gzip 
> Content-Type: application/json 
> Content-Length: 2 
| {} 

Ejabberd版本是17.04,從下載的deb包安裝,併爲ejabberd用戶在Debian 8.8(傑西)x86_64的運行。 安裝後,我只是添加了主機「localhost」,爲本地主機註冊了一個新用戶「admin」,並將其添加到ACL中。

我到ejabberd.yml做的更改:

hosts: 
    - "localhost" 
acl: 
    admin: 
    user: 
     - "admin": "localhost" 

否則,我可以訪問WebAdmin的接口,該接口能正常工作...
我能爲了做有一個200 OK響應?

回答

1

好的,我找到了解決方案。就像這條消息說這是一個許可問題。
這裏的默認配置:

api_permissions: 
## ... 
    "public commands": 
    who: 
     - ip: "127.0.0.1/8" 
    what: 
     - "status" 
     - "connected_users_number" 

允許訪問statusconnected_users_number命令有或無認證(是的,我檢查了兩倍)。

對於沒有認證的使用,使用-all

"public commands": 
    who: 
## This allows to use both commands without having to authenticate 
     - all 
    what: 
     - "status" 
     - "connected_users_number" 

如果你想需要一個有效的用戶(使用基本身份驗證),由- access: local更換- all

"public commands": 
    who: 
## This allows to use both commands with basic authentication for local users 
     - access: local 
    what: 
     - "status" 
     - "connected_users_number"