Microsoft Graph API - получение сведений о владельце группы и сведений о группе в Azure - PullRequest
0 голосов
/ 12 февраля 2019

В Azure я мог найти API для получения информации о группе, как показано ниже

https://graph.microsoft.com/v1.0/groups

, которая даст мне все детали группы, как показано ниже

{  
  "value": [  
    {  
      "id": "/groups/53c765632095310385020001",  
      "name": "Administrators",  
      "description": "Administrators is a built-in group. Its membership is managed by the system. Microsoft Azure subscription administrators fall into this group.",  
      "builtIn": true,  
      "type": "system",  
      "externalId": null  
    },  
    {  
      "id": "/groups/53c765632095310385020002",  
      "name": "Developers",  
      "description": "Developers is a built-in group. Its membership is managed by the system. Signed-in users fall into this group.",  
      "builtIn": true,  
      "type": "system",  
      "externalId": null  
    },  
    {  
      "id": "/groups/53c765632095310385020003",  
      "name": "Guests",  
      "description": "Guests is a built-in group. Its membership is managed by the system. Unauthenticated users visiting the developer portal fall into this group.",  
      "builtIn": true,  
      "type": "system",  
      "externalId": null  
    }  
  ],  
  "count": 3,  
  "nextLink": null  
}  

, нопроблема в том, что мне нужны данные о владельце группы, а также сведения о группе.В настоящее время я вызываю другой API, как показано ниже, для получения сведений о владельце группы

https://graph.microsoft.com/v1.0/groups/{groupId}/owners

Существует ли какой-либо API или любой другой способ, с помощью которого я могу получить сведения о владельце группы вместе с данными о группах в одном кадре в Azure

1 Ответ

0 голосов
/ 12 февраля 2019

Microsoft Graph API поддерживает некоторые необязательные параметры запроса, такие как выбор, фильтрация, расширение, поиск и т. Д., Которые помогают контролировать, какие данные вы возвращаете в ответ на ваш запрос.Вы можете прочитать о них здесь

параметр расширения может быть полезным для вашего случая использования.

Я быстро опробовалзапрос, подобный приведенному ниже, Microsoft Graph Explorer , который возвращает информацию о группе, а также коллекцию владельцев для каждой группы.

https://graph.microsoft.com/v1.0/groups?$expand=owners

Отказ от ответственности: в параметре Документы Microsoft для расширения есть примечание, в котором говорится:что-то вроде

С ресурсами Azure AD, которые создаются на основе directoryObject, такими как пользователь и группа, $ expand поддерживается только для бета-версии и обычно возвращает максимум 20 элементов для расширенного отношения.

Хотя вышеупомянутый запрос, который использует v1.0, работал нормально для меня, по крайней мере, из Graph Explorer.Поэтому сделайте как можно больше тестов (с большим количеством групп), прежде чем начинать полагаться на него.Я также обновлю информацию на случай, если найду более свежую документацию, касающуюся того же самого.

Вот точный ответ, который я получил на запрос, который я упомянул выше.Он довольно большой, я просто включил 2 группы и удалил другие, чтобы вы поняли.

Важно отметить, что коллекция владельцев присутствует вместе с группами.Обратите внимание, что первая группа не имеет назначенных владельцев, но вторая группа имеет 2 пользователей в качестве владельцев.

REQUEST

GET https://graph.microsoft.com/v1.0/groups?$expand=owners

RESPONSE

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups",
    "value": [
        {
            "id": "xxxx-redacted-49b4e13fcf0f",
            "deletedDateTime": null,
            "classification": null,
            "createdDateTime": "2018-09-26T04:41:10Z",
            "creationOptions": [],
            "description": null,
            "displayName": "Business",
            "groupTypes": [],
            "mail": null,
            "mailEnabled": false,
            "mailNickname": "xxxx-redacted-88df-adf033b7f545",
            "onPremisesLastSyncDateTime": null,
            "onPremisesSecurityIdentifier": null,
            "onPremisesSyncEnabled": null,
            "preferredDataLocation": null,
            "proxyAddresses": [],
            "renewedDateTime": "2018-09-26T04:41:10Z",
            "resourceBehaviorOptions": [],
            "resourceProvisioningOptions": [],
            "securityEnabled": true,
            "visibility": null,
            "onPremisesProvisioningErrors": [],
            "owners": []
        },
        {
            "id": "xxxx-redacted-9316-a5acea4412d8",
            "deletedDateTime": null,
            "classification": null,
            "createdDateTime": "2018-09-26T04:19:29Z",
            "creationOptions": [],
            "description": null,
            "displayName": "DevOps",
            "groupTypes": [],
            "mail": null,
            "mailEnabled": false,
            "mailNickname": "xxxx-redacted-4f18-b2b1-e5a7b80d19ea",
            "onPremisesLastSyncDateTime": null,
            "onPremisesSecurityIdentifier": null,
            "onPremisesSyncEnabled": null,
            "preferredDataLocation": null,
            "proxyAddresses": [],
            "renewedDateTime": "2018-09-26T04:19:29Z",
            "resourceBehaviorOptions": [],
            "resourceProvisioningOptions": [],
            "securityEnabled": true,
            "visibility": null,
            "onPremisesProvisioningErrors": [],
            "owners": [
                {
                    "@odata.type": "#microsoft.graph.user",
                    "id": "xxxx-redacted-8000-8cb9f0d497c9",
                    "deletedDateTime": null,
                    "accountEnabled": true,
                    "ageGroup": null,
                    "businessPhones": [],
                    "city": "xxxx",
                    "companyName": null,
                    "consentProvidedForMinor": null,
                    "country": "xxxx",
                    "createdDateTime": null,
                    "department": "Human Resources",
                    "displayName": "Adam G",
                    "employeeId": null,
                    "faxNumber": null,
                    "givenName": "Adam",
                    "jobTitle": "Senior Human Resource Manager",
                    "legalAgeGroupClassification": null,
                    "mail": null,
                    "mailNickname": "adamg",
                    "mobilePhone": "xxxx",
                    "onPremisesDistinguishedName": null,
                    "onPremisesDomainName": null,
                    "onPremisesImmutableId": null,
                    "onPremisesLastSyncDateTime": null,
                    "onPremisesSecurityIdentifier": null,
                    "onPremisesSamAccountName": null,
                    "onPremisesSyncEnabled": null,
                    "onPremisesUserPrincipalName": null,
                    "otherMails": [],
                    "passwordPolicies": "DisablePasswordExpiration",
                    "passwordProfile": null,
                    "officeLocation": "131/1105",
                    "postalCode": "98052",
                    "preferredLanguage": "en-US",
                    "proxyAddresses": [],
                    "refreshTokensValidFromDateTime": "2018-09-19T03:34:39Z",
                    "imAddresses": [],
                    "isResourceAccount": null,
                    "showInAddressList": null,
                    "state": "MH",
                    "streetAddress": "xxxxxxxe",
                    "surname": "Gily",
                    "usageLocation": "US",
                    "userPrincipalName": "adamg@xxxxx.onmicrosoft.com",
                    "userType": "Member",
                    "assignedLicenses": [],
                    "assignedPlans": [],
                    "onPremisesProvisioningErrors": [],
                    "onPremisesExtensionAttributes": {
                        "extensionAttribute1": null,
                        "extensionAttribute2": null,
                        "extensionAttribute3": null,
                        "extensionAttribute4": null,
                        "extensionAttribute5": null,
                        "extensionAttribute6": null,
                        "extensionAttribute7": null,
                        "extensionAttribute8": null,
                        "extensionAttribute9": null,
                        "extensionAttribute10": null,
                        "extensionAttribute11": null,
                        "extensionAttribute12": null,
                        "extensionAttribute13": null,
                        "extensionAttribute14": null,
                        "extensionAttribute15": null
                    },
                    "provisionedPlans": []
                },
                {
                    "@odata.type": "#microsoft.graph.user",
                    "id": "xxxx-redacted-4824-8013-4325f68e275d",
                    "deletedDateTime": null,
                    "accountEnabled": true,
                    "ageGroup": null,
                    "businessPhones": [],
                    "city": null,
                    "companyName": null,
                    "consentProvidedForMinor": null,
                    "country": null,
                    "createdDateTime": null,
                    "department": null,
                    "displayName": "groupownertest",
                    "employeeId": null,
                    "faxNumber": null,
                    "givenName": null,
                    "jobTitle": null,
                    "legalAgeGroupClassification": null,
                    "mail": null,
                    "mailNickname": "groupownertest",
                    "mobilePhone": null,
                    "onPremisesDistinguishedName": null,
                    "onPremisesDomainName": null,
                    "onPremisesImmutableId": null,
                    "onPremisesLastSyncDateTime": null,
                    "onPremisesSecurityIdentifier": null,
                    "onPremisesSamAccountName": null,
                    "onPremisesSyncEnabled": null,
                    "onPremisesUserPrincipalName": null,
                    "otherMails": [],
                    "passwordPolicies": null,
                    "passwordProfile": null,
                    "officeLocation": null,
                    "postalCode": null,
                    "preferredLanguage": null,
                    "proxyAddresses": [],
                    "refreshTokensValidFromDateTime": "2019-01-23T18:56:43Z",
                    "imAddresses": [],
                    "isResourceAccount": null,
                    "showInAddressList": null,
                    "state": null,
                    "streetAddress": null,
                    "surname": null,
                    "usageLocation": null,
                    "userPrincipalName": "groupownertest@XXXXX.onmicrosoft.com",
                    "userType": "Member",
                    "assignedLicenses": [],
                    "assignedPlans": [],
                    "onPremisesProvisioningErrors": [],
                    "onPremisesExtensionAttributes": {
                        "extensionAttribute1": null,
                        "extensionAttribute2": null,
                        "extensionAttribute3": null,
                        "extensionAttribute4": null,
                        "extensionAttribute5": null,
                        "extensionAttribute6": null,
                        "extensionAttribute7": null,
                        "extensionAttribute8": null,
                        "extensionAttribute9": null,
                        "extensionAttribute10": null,
                        "extensionAttribute11": null,
                        "extensionAttribute12": null,
                        "extensionAttribute13": null,
                        "extensionAttribute14": null,
                        "extensionAttribute15": null
                    },
                    "provisionedPlans": []
                }
            ]
        }
    ]
}

ОБНОВЛЕНИЕ 1 (для ответов на вопросы из комментариев)

члены и владельцы являются навигационными свойствами / отношениями, а не прямыми свойствами для групп.Вы можете расширить только по одному за раз.Я покажу вам 3 быстрых вызова API, которые можно протестировать из Microsoft Graph Explorer.

развернуть только элементы - Это работает, как ожидается, и возвращает группы, а также членов для каждой группы.

GET https://graph.microsoft.com/v1.0/groups?$expand=members

развернуть только владельцев - Это работает, как ожидается, и возвращает группы, а также владельцев для каждой группы.Пример ответа, приведенный выше, уже.

GET https://graph.microsoft.com/v1.0/groups?$expand=owners

разверните участников и владельцев одним вызовом

GET https://graph.microsoft.com/v1.0/groups?$expand=members,owners

RESPONSE

youможно развернуть только одно навигационное свойство за один вызов. Посмотрите на сообщение об ошибке, оно довольно интуитивно :

{
    "error": {
        "code": "Request_BadRequest",
        "message": "The result of parsing $expand contained at least 2 items, but the maximum allowed is 1.",
        "innerError": {
            "request-id": "119cf794-af56-48a0-b415-4d52c2e60e98",
            "date": "2019-02-13T02:57:13"
        }
    }
}

ОБНОВЛЕНИЕ 2 (чтобы ответить на запрос о расширении и выбрать вместе из комментариев)

Я не думаю, что вы сможете $ выбрать только несколько столбцов вместе с $ expand в запросе.Это, кажется, известное ограничение.См. Две ссылки ниже для получения дополнительной информации

  1. Ограничения параметров запроса - Документы Microsoft
  2. Еще одно сообщение SO В частности, в этом сообщении SOпосмотрите на комментарий от Marc LaFleur и ответ от Дэн Кершоу - MSFT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...