0

我们正在寻求一种方法,在 MarkLogic 中有服务帐户,但不考虑所有实际用户。我们将使用自定义身份验证令牌,在本例中为 JSWT,然后通过 xdmp:login 将调用用户提升到适当的角色。

如果我们使用自己的模块重写器创建自定义 HTTP 服务器,这一切都很好。如果我们想利用已经构建的 REST API,那么本质上是围绕从 REST 重写器分派到的每个 XQuery 模块创建包装器的唯一选择,以便在完成其余操作之前调用 xdmp:login 流REST api 工作流程?我没有看到任何使用增强型 HTTP 重写器配置在调度流之前运行任意 XQuery 代码的方法。

这是一个可行的想法,还是只是一个坏主意?

4

2 回答 2

1

REST API 的最佳实践是使用中间层。将 REST API 直接暴露给您的最终用户类似于使用 ODBC 连接这样做——您通常不会这样做。

我的建议是建立一个中间层并使用它收集凭据,然后根据需要登录。

于 2016-02-22T17:07:23.983 回答
0

您可以修改开箱即用的 REST API 端点以执行 xdmp:login,但当然这会在执行升级和部署应用程序时产生复杂性。这真的是最坏的情况。

您是否能够将您的所有用户映射到一个更小的 ML 用户集,可能是几十个?然后中间层可以执行类似于 xdmp:login 的操作——它可以查看用户的个人资料并确定与哪个 ML 用户连接到 ML。这不像 xdmp:login 那样灵活,它可以让您选择您想要的任何角色,而无需创建用户作为他们的持有者,但它可能会成功。

于 2016-02-29T12:49:10.367 回答