2017-01-14 3 views
1

Ich installierte eJabberd 16.2 auf meinem Rechner. Ich versuche über Postman auf die API zuzugreifen. Wenn ich Basic Auth verwende, funktioniert alles gut.eJabberd API mit OAuth2

ich es geschafft, ein Token durch die Seite zu bekommen: http://localhost:5280/oauth/authorization_token?response_type=token&client_id=Client1&scope=get_roster+sasl_auth

Aber jedes Mal, wenn ich versuchen, durch das Hinzufügen und Berechtigungsfeld mit einem Wert Header der Anforderung der api mit dem Token für den Zugriff von: „Inhaber s7rjU649vlnVZUzaGXDtNdLQ1I4r7V2R "Ich erhalte den Fehlercode 32:" AccessRules: Das mit dem Token verknüpfte Konto hat nicht das Recht, den Vorgang auszuführen. "

Dies ist die config in eJabberd.yml Datei:

- 
    port: 5280 
    module: ejabberd_http 
    request_handlers: 
     "/http-bind": mod_http_bind 
     "/websocket": ejabberd_http_ws 
     #"/log": mod_log_http 
     # ##OAuth support: 
     "/oauth": ejabberd_oauth 
     # ##ReST API: 
     "/api": mod_http_api 

    ## "/pub/archive": mod_http_fileserver 
    web_admin: true 
    http_bind: true 
    http_poll: true 
    register: true 
    captcha: false 
    commands_admin_access: 
     - allow: 
     - user: "[email protected]" 
    commands: 
     - add_commands: [user, admin, open] 
    oauth_expire: 3600 
    oauth_access: all 

    api_permissions: 
     - "Admin access": 
     - who: 
      - admin 
     - what: 
      - "*" 
      - "!stop" 

Jede Idee, warum ich nicht OAuth-Token zu verwenden.

Antwort

0

Konfiguration sollte sein:

- 
    port: 5280 
    module: ejabberd_http 
    request_handlers: 
     "/websocket": ejabberd_http_ws 
     "/oauth": ejabberd_oauth 
     "/api": ejabberd_http_api 
    web_admin: true 
    http_bind: true 
    ## register: true 
    captcha: false 
    tls: true 
    certfile: "/opt/ejabberd-16.12/conf/server.pem" 

commands_admin_access: configure 
commands: 
    - add_commands: 
    - user 
oauth_expire: 31536000 
oauth_access: all 

api_permissions: 
    - "Admin access": 
    - who: 
     - admin 
    - what: 
     - "*" 
     - "!stop" 
+0

Vielen Dank für Ihre Antwort. Aber es hat das Problem nicht gelöst. Als ich "tls: true" hinzugefügt habe, konnte ich die API nicht mehr aufrufen. –

+0

Sie haben Recht, ich dachte, da ich OAUTH Token konnte, dass ich Token zu Operationen wie Registrierung verwenden konnte, aber in der Tat konnte ich das überhaupt nicht funktionieren Ich kann es nur mit der Standardauthentifizierung Ich habe hinzugefügt ein Problem auf GitHub für das https://github.com/processone/ejabberd/issues/1491 –