使用MarkLogic的REST API设置文档权限

pal*_*oma 7 permissions rest marklogic

我正在尝试使用其余的api 在MarkLogic 6数据库中指定文档的权限.

这是我发送的权限元数据(permissions.xml):

<rapi:metadata xmlns:rapi="http://marklogic.com/rest-api"
     xmlns:prop="http://marklogic.com/xdmp/property">
    <rapi:permissions>
        <rapi:permission>
            <rapi:role-name>arole</rapi:role-name>
            <rapi:capability>update</rapi:capability>
        </rapi:permission>
        <rapi:permission>
            <rapi:role-name>brole</rapi:role-name>
            <rapi:capability>read</rapi:capability>
        </rapi:permission>
    </rapi:permissions>
</rapi:metadata>
Run Code Online (Sandbox Code Playgroud)

使用此命令:

curl --anyauth --user user:pass -X PUT -T permissions.xml \
    -H "Content-type: application/xml" \
    "http://localhost:8003/v1/documents?uri=/test/test.xml&category=permissions"
Run Code Online (Sandbox Code Playgroud)

当我看到之后的权限后,我看到:

arole (update)
brole (read)
rest-reader (read)
rest-writer (update)
Run Code Online (Sandbox Code Playgroud)

我希望它只拥有arole和brole的权限.

文档说:"如果没有明确设置权限,那么使用MarkLogic REST API创建的文档对其余读者角色具有读取权限,对rest-writer角色具有更新权限." (是的,我知道,这个例子不会创建一个新文档.但如果我添加一个新文档并通过其余的api使用多部分内容+元数据消息同时设置权限,它也会做同样的事情).

通过xdmp:document-insert使用相同用户和数据库的直接xquery调用(例如,具有权限)设置权限可以按预期工作.

如何保持其余的api添加这些额外的权限?

编辑:

MarkLogic有一张票,没有我知道的目标日期或版本.

如果其他人碰到这个,他们确实给了我一个解决方法:创建新角色(或更改现有角色),并给予他们休息阅读器和/或休息写入者'执行'权限,而不是让他们继承其余阅读器/ rest-writer角色,或者让用户直接分配其余读者/ rest-writer角色.

mbl*_*ele 3

内部函数docmodupd:write-permissions始终将输入权限与 的输出结合起来xdmp:default-permissions。这样做是为了确保rest-reader可以读取文档并rest-writer可以更新它。据我所知,没有 API 可以控制这种行为。

如果您有强烈的用例需要忽略这些额外权限,请联系支持人员。