我们正在寻找一种方法,其中MarkLogic中有服务帐户,但没有为所有实际用户提供帐户。 在这种情况下,我们将使用自定义身份验证令牌JSWT,然后通过xdmp:login将调用用户提升为适当的角色。
如果我们使用自己的模块重写器创建一个自定义HTTP服务器,那就很好。 如果我们要利用已经构建的REST API,则是唯一一种从REST重写器派发到的每个XQuery模块周围创建包装的唯一选择,以便在执行其余操作之前调用xdmp:login流api api工作流程? 我没有看到使用增强的HTTP重写器配置以任何方式在调度流之前运行任意XQuery代码的任何方式。
这是一个可行的想法,还是一个坏主意?
REST API的最佳实践是使用中间层。 将REST API直接暴露给最终用户类似于使用ODBC连接进行操作-通常您不会这样做。
我的建议是建立一个中间层并使用该中间层来收集凭据,然后根据需要登录。
您可以修改现成的REST API端点以执行xdmp:login,但是当然在执行升级和部署应用程序时会增加复杂性。 这确实是最坏的情况。
您是否可以将所有用户映射到一个较小的ML用户集合(也许几十个)? 然后,中间层可以执行类似于xdmp:login的操作-它可以查看用户的个人资料并确定与哪个ML用户连接到ML。 这并不像xdmp:login那样灵活,它可以让您选择所需的任何角色,而无需创建用户作为其所有者,但是它可以解决问题。