как вы получаете разрешения удаленного элемента DriveItem? - PullRequest
0 голосов
/ 22 апреля 2019

Используя MS Graph REST API, я могу получить driveItems, которые мне предоставлены.Разрешения этих «удаленных» driveItems включают в себя один, идентифицирующий меня как пользователя.Однако этот объект разрешения не имеет «ролей» (в частности, список ролей содержит ноль записей).

Я попытался просмотреть свойства RemoteItem, но они не содержат никакой информации о безопасности.

Каков правильный метод определения прав доступа моего пользователя к этому конкретному DriveItem?

До сих пор я тестировал с помощью C # MSGraph SDK и обнаружил, что у всех представленных мне элементов пустой список ролей..

Я также использовал онлайн-обозреватель графиков и определил, что это правда.

Когда я извлек реальный элемент с помощью обозревателя графиков, обратите внимание на следующий фрагмент этого примера из MSFT:

        {
        "id": "aTowIy5mfG1lbWJlcnNoaXB8YWxleHdAbTM2NXgyMTQzNTUub25taWNyb3NvZnQuY29t",
        "roles": [],
        "grantedTo": {
            "user": {
                "email": "AlexW@M365x214355.onmicrosoft.com",
                "id": "4782e723-f4f4-4af3-a76e-25e3bab0d896",
                "displayName": "Alex Wilber"
            }
        }
    },

(Роли для пользователя не указаны?)

Я бы ожидал, поскольку мой пользователь был явно указан в одном из разрешений фактического извлеченного DriveItem, что Роль будеттакже указал мой доступ / фактическое разрешение.

1 Ответ

0 голосов
/ 23 апреля 2019

Следующая конечная точка:

GET /drives/{remoteItem-driveId}/items/{remoteItem-id}/permissions

возвращает общий доступ разрешения для DriveItem ресурса

Результат

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#drives('b%21IZJbPb0BjUKDAjMnMOSRf44bwdRO75NGunQibG16o65AcVUi0kiOSZ9k4-NxVd6C')/items('01H24BBVK3QUEPTCR2MNB3HMLTNUZINN54')/permissions",
    "value": [
        {
            "id": "c0594808-fbbb-4c56-9b62-bc37307a2424",
            "roles": [
                "write"
            ],
            "link": {
                "scope": "anonymous",
                "type": "edit",
                "webUrl": "https://contoso-my.sharepoint.com/:w:/g/personal/jdoe_contoso_onmicrosoft_com/EVuFCPmKOmNDs7FzbTKGt7wBxdHHpbjDMOzy3_ng2KHCAQ"
            }
        },
        {
            "id": "8a03ff0b-5196-4585-b8a9-4d95115e10c2",
            "roles": [
                "read"
            ],
            "link": {
                "scope": "anonymous",
                "type": "view",
                "webUrl": "https://contoso-my.sharepoint.com/:w:/g/personal/jdoe_contoso_onmicrosoft_com/EVuFCPmKOmNDs7FzbTKGt7wB8wPZsfAqSd-IQYE337GDjg"
            }
        },
        {
            "id": "aTowIy5mfG1lbWJlcnNoaXB8dmdyZW1AbWVkaWFkZXY4OC5vbm1pY3Jvc29mdC5jb20",
            "roles": [
                "owner"
            ],
            "grantedTo": {
                "user": {
                    "email": "jdoe@contoso.onmicrosoft.com",
                    "id": "1ee49b6f-4632-4806-a4dd-e065844f9cd1",
                    "displayName": "Jon Doe"
                }
            }
        }
    ]
}

В следующем примере показано, как распечатать свойство Permissions resource Roles через msgraph-sdk-dotnet:

var item = await graphClient.Drives[driveId].Items[itemId].Request().Expand("Permissions").GetAsync();
foreach (var permission in item.Permissions)
{
    var roleNames = String.Join(", ", permission.Roles.ToArray());
    Console.WriteLine(roleNames);
}
...