【发布时间】:2013-12-21 11:16:12
【问题描述】:
我正在尝试使用 rest 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>
使用这个命令:
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"
当我之后查看权限时,我看到:
arole (update)
brole (read)
rest-reader (read)
rest-writer (update)
我希望它只有 arole 和 brole 的权限。
文档说:“如果没有明确设置权限,您使用 MarkLogic REST API 创建的文档对 rest-reader 角色具有读取权限,对 rest 角色具有更新权限-作家角色。” (是的,我知道,这个例子并没有创建一个新文档。但是如果我添加一个新文档并同时使用多部分内容+元数据消息通过 rest api 设置权限,它会做同样的事情)。
使用相同的用户和数据库通过直接 xquery 调用(例如xdmp:document-insert 具有权限)设置权限按预期工作。
我怎样才能阻止其余的 api 添加这些额外的权限?
编辑:
MarkLogic 有一张票,我还不知道目标日期或版本。
万一其他人遇到这种情况,他们确实给了我一个解决方法:创建新角色(或更改现有角色),并赋予他们 rest-reader 和/或 rest-writer '执行'权限,而不是让他们继承rest-reader/rest-writer 角色,或让用户直接分配 rest-reader/rest-writer 角色。
【问题讨论】:
标签: rest permissions marklogic