eXist-DB 为 REST / PUT 请求配置安全性

eXist-DB configure security for REST / PUT requests

我的网站上有一个简单的联系表,它成功地向我的 eXist-db 发出了 HTTP PUT

每个 PUT 创建一个独特的 XML 文档,如下所示: http://medieval-inquisition.huma-num.fr/exist/rest/db/apps/deheresi/comm/some_unique_name.xml

执行此操作时,服务器要求输入密码。

为 public 写入而不是 read/edit 配置 HTTP PUT 的最佳实践是什么?

这仅仅是为只允许对此集合进行写访问的 REST activity 创建一个唯一的用户/密码的问题吗?

还有其他的考虑吗?

是否有具体的、推荐的 eXist-db 方法?

提前致谢。

所以你有几个选择:

  1. 利用 Collection 权限,例如owner/group/mode/acl 并使用在 HTTP PUT 中经过身份验证的用户或组来控制谁可以写入 Collection。

    Collection 的模式 rwx:

    1. r(读取)使 user/group 能够列出 Collection
    2. 的内容
    3. w(写入)使 user/group 能够写入 Collection;请注意,这 包括删除文档!
    4. x(执行)允许 user/group 打开 Collection,没有 'x' 则 rw 都不允许.

    但是,由于 Collections 是通过 HTTP REST API 公开的,除非您禁用 REST API,您可能不想提供 public用户 w 访问您的 Collection。因为他们可以在 Collection.

  2. 中仅通过 HTTP DELETE 文档
  3. 相反,您可能需要一个 public 用户,该用户对通过 REST [=62] 公开的 XQuery 主模块具有 s(set-uid + 执行)访问权限=] 或 RESTXQ end-point。当通过 HTTP PUT 访问时,这个 main-module 将假定一个有效的用户 ID,并写入 Collection。 HTTP PUT 到 XQuery 主模块而不是 Collection:

    的优势
    1. 您可以使用 XQuery 主模块忽略 HTTP DELETE/POST/GET 等,这会阻止用户直接修改 Collection.
    2. 您不需要在 eXist-db 之外共享您的特权用户的凭据。
    3. XQuery 主模块变得特定于任务,因此具有更小的攻击服务并充当有限的访问控制点。

    在您的 XQuery 主模块中,您还可能希望对正在创建的文档设置特定权限。