我们希望采用MarkLogic中存在服务帐户的方法,但不考虑所有实际用户的帐户。在这种情况下,我们将使用自定义身份验证令牌JSWT,然后通过xdmp:login将主叫用户提升为相应的角色。
如果我们使用我们自己的模块重写器创建自定义HTTP服务器,这一切都很好。如果我们想利用已经构建的REST API,那么实际上是唯一的选择是围绕从REST重写器分派的每个XQuery模块创建一个包装器,以便在完成其余的之前调用xdmp:login流程。 REST api工作流程?我没有看到增强的HTTP重写器配置在调度流之前运行任意XQuery代码的任何方法。
这是一个可行的想法,还是一个坏主意?
答案 0 :(得分:1)
使用REST API的最佳做法是使用中间层。将REST API直接暴露给最终用户类似于使用ODBC连接这样做 - 这通常是您无法做到的。
我的建议是设置中间层并使用收集凭据,然后根据需要登录。
答案 1 :(得分:0)
您可以修改现成的REST API端点以执行xdmp:login,但这当然会在执行升级和部署应用程序时产生复杂性。这确实是最糟糕的情况。
您是否能够将所有用户映射到更小的ML用户集,可能是几十个?然后中间层可以执行类似于xdmp的操作:登录 - 它可以查看用户的配置文件并确定连接到ML的ML用户。这不像xdmp:login那么灵活,它可以让你选择你想要的任何角色,而无需创建用户作为他们的持有者,但它可以做到这一点。