【问题标题】:Accessing ejabberd ReST API through node js app通过node js app访问ejabberd ReST API
【发布时间】:2017-08-04 16:25:35
【问题描述】:

我有一个在 Ubuntu 16.04 上运行的 ejabberd (16.01) 服务器。我有另一个 NodeJs 应用程序在不同的服务器上运行。通过 NodeJs 应用程序,我希望使用 https://docs.ejabberd.im/developer/ejabberd-api/ 提供的 ReST API 添加用户、添加花名册等。

我正在为这个练习做https://docs.ejabberd.im/developer/ejabberd-api/simple-configuration/ 给出的简单配置。配置说要在sn-p下面添加:

  commands_admin_access:
    - allow:
      - user: "admin@localhost"
  commands:
    - add_commands: [user, admin, open]
  # Tokens are valid for a year as default:
  auth_expire: 31536000
  oauth_access: all

这里的问题是,文档没有指定这些配置需要添加到什么标题下?此配置的确切位置完全丢失!

我在文件末尾添加了上述配置。但是,ejabberd 服务器无法识别这些选项。日志说:

validate_opts:792 unknown option 'auth_expire' will be likely ignored
validate_opts:792 unknown option 'api_permissions' will be likely ignored
validate_opts:784 ignoring option 'commands_admin_access' with invalid value: [[{allow,[[{user,<<"ankit@replica3377.cloudapp.net">>}]]}]]

以下是我在 ejabberd.yml 文件中添加的额外配置:

commands_admin_access:
  - allow:
    - user: "ankit@replica3377.cloudapp.net"
commands:
  - add_commands:
    - status
    - registered_users
    - register
    - unregister
# Tokens are valid for a year as default:
auth_expire: 31536000
oauth_access: all

api_permissions:
  "API used from localhost allows all calls":
    - who:
      - ip: "168.63.209.95"
    - what:
      - "*"
      - "!stop"
      - "!start"

我认为文档不是很清楚。有人可以建议我在这里做错了什么吗?或者有没有其他方法可以实现我想要做的事情?

【问题讨论】:

  • 我需要你的帮助@ankit。您的节点 api 如何使用 ejabberd 服务器进行身份验证。你能帮帮我吗?

标签: node.js ejabberd ejabberd-api


【解决方案1】:

您使用的是非常旧的 Ejabberd 版本。最新的是 17.04,从 16.01 开始,API 权限框架有很多变化。

首先,让我澄清一下您看到警告的原因。

  1. 'auth_expire' -- 实际参数名称是 'oauth_expire'。看起来文档中有错误。代码请参考this链接。
  2. 'api_permission' -- 该参数在 16.12 版本中引入。请参考this链接。
  3. 'commands_admin_access' -- 在 16.01 版本中,此参数仅将 atom 作为输入。在以后的版本中引入了 ACL 支持。因此,您可以创建 ACL 规则并提供规则名称,例如 this

现在回答在哪里添加这个参数的问题——你可以在任何你想要的地方添加这个参数,只要你遵循 yaml 格式的指导方针。由于这是独立配置,因此不应在任何其他配置下。你可以把它放在最后,它应该可以正常工作。

【讨论】:

  • 让我试一试!谢谢,@Darshan :)
猜你喜欢
  • 1970-01-01
  • 2016-09-01
  • 1970-01-01
  • 2018-06-22
  • 2018-04-22
  • 2019-10-23
  • 1970-01-01
  • 2017-02-09
  • 1970-01-01
相关资源
最近更新 更多