【发布时间】:2017-02-14 17:36:55
【问题描述】:
使用 Graph API 将文件上传到 Office 365 组的 OneDrive 后,我们希望撤消文件的默认权限。但是,在最近才创建的组中,这会失败。
默认情况下,文件的权限是“GroupName Owners”、“GroupName Members”和“GroupName visitor”。我们希望删除这些权限并授予对特定 AD 安全组的访问权限。
上传文件后,我们在获取默认权限时会看到两种不同的结果(准备删除它们)。
在一种情况下,我们获得了四个权限——上面列出的三个,加上一个具有 grantedTo 的“特殊”权限,用户的 ID 与组 ID 匹配。我们已经学会了不要删除这个权限,因为我们失去了删除其他权限的能力。
这里,这个“特殊”权限是列出的第一个:
{
"@odata.context": "https://graph.microsoft.com/V1.0/$metadata#drives('b%21Y25ow5oitkOvNToutf7LrYZ-y78P2jBEjoGLzb3oPqnw0a3YKFDwTobjTB4gYxKt')/root/permissions",
"value": [
{
"grantedTo": {
"user": {
"id": "273c2c33-8533-445d-ae65-4b63be296995",
"displayName": "SharePoint Tests"
}
},
"id": "Yzowby5jfGZlZGVyYXRlZGRpcmVjdG9yeWNsYWltcHJvdmlkZXJ8MjczYzJjMzMtODUzMy00NDVkLWFlNjUtNGI2M2JlMjk2OTk1X28",
"roles": [
"write"
]
},
{
"grantedTo": {
"user": {
"displayName": "SharePoint Tests Owners"
}
},
"id": "U2hhcmVQb2ludCBUZXN0cyBPd25lcnM",
"roles": [
"SP.Full Control",
"write"
]
},
{
"grantedTo": {
"user": {
"displayName": "SharePoint Tests Visitors"
}
},
"id": "U2hhcmVQb2ludCBUZXN0cyBWaXNpdG9ycw",
"roles": [
"read"
]
},
{
"grantedTo": {
"user": {
"displayName": "SharePoint Tests Members"
}
},
"id": "U2hhcmVQb2ludCBUZXN0cyBNZW1iZXJz",
"roles": [
"SP.Edit"
]
}
]
}
但是,在创建组后的一段时间内,上传文件后,我们只能获得 3 个权限 - 缺少上面提到的特殊权限。在这种情况下,尝试删除其他权限失败并显示“未经身份验证”错误代码。例如。
DELETE https://graph.microsoft.com/V1.0/drives/b!zn7l0OHTmUa3lGABIbIGQIZ-y78P2jBEjoGLzb3oPqnw0a3YKFDwTobjTB4gYxKt/items/013LUA5IQEPURED3OSURAI27FBHDYLFQJP/permissions/U2FnZSAtIFBBUiBTZWN1cml0eSA0IE93bmVycw
我们仍然可以添加权限,只是不能撤销默认权限。
对于在给定 Office 365 统一组中创建的所有文件,这种情况似乎一直存在,直到创建后几分钟。
目前我们唯一的选择似乎是创建一个虚拟文件,看看我们是否获得了 3 或 4 个权限(或者只是尝试删除默认权限)。如果我们只得到 3 次,请在一段时间后重试。但这似乎是一个脆弱的 hack,并为我们的上传过程增加了大量时间(几分钟)。
有没有人有更好的建议,或者对这种行为的解释?
谢谢
【问题讨论】:
-
更新 - 在我们今天早上的最新测试中,我们发现在创建组 64 分钟后可以撤销权限。
标签: permissions onedrive microsoft-graph-api