2017-05-31 8 views
-1

Ich versuche ejabberd Rest api ohne Authentifizierung für den Zugriff aber immer eine 403 Forbidden Antwort mit diesem Körper erhalten:ejabberd Rest API ohne Authentifizierung, 403 Forbidden (Fehlercode 32)

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

Ich kann nicht eine OK-Antwort erhalten unter /api/status Endpunkt, der ein Befehl ist, den alle Benutzer von 127.0.0.1 verwenden dürfen (siehe Abschnitt "Öffentliche Befehle" unter api_permissions in ejabberd.yml).

Hier ist die Anfrage Details (über Insomnia REST-Client):

> 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 Version 17.04, installiert von einem heruntergeladenen deb-Paket und läuft auf Debian 8.8 (jessie) x86_64 als ejabberd Benutzer. Nach der Installation habe ich einfach den Host "localhost" hinzugefügt, einen neuen Benutzer "admin" für localhost registriert und den ACLs hinzugefügt.

Die einzigen Änderungen, die ich in ejabberd.yml gemacht:

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

Ansonsten kann ich die WebAdmin-Schnittstelle zugreifen, die gut funktioniert ...
Was kann ich tun, um eine 200 OK-Antwort zu haben?

Antwort

1

Ok, ich habe die Lösung gefunden. Wie die Nachricht sagte, es war ein Erlaubnissproblem.
Hier ist die Standardkonfiguration:

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

Diese nicht auf status oder connected_users_number Befehle zugreifen können, um mit oder ohne Authentifizierung (ja, ich geprüft verdreifachte).

Für eine ohne Authentifizierung Gebrauch verwenden -all:

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

Wenn Sie einen gültigen Benutzer erforderlich sein sollen (mit Standardauthentifizierung), - all durch - access: local ersetzen.

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