Microsoft graph API: невозможно получить пользователей с созданным токеном доступа - PullRequest
2 голосов
/ 11 июня 2019

Я зарегистрировал приложение на портале Azure и сгенерировал client_secret.Мне требуется поток грантов клиента, и я также дал разрешения на приложения.Я также дал согласие администратора, поскольку сам являюсь администратором.

Я могу сгенерировать токен доступа с указанным URL:

https://login.microsoftonline.com/47be0abf-c6a1-4f04-a665-dceb081c4ff1/oauth2/v2.0/token?client_id=********&client_secret=******&grant_type=client_credentials&scope=User.ReadBasic.All%20User.Read%20User.ReadWrite%20User.Read.All%20User.ReadWrite.All%20Directory.Read.All%20Directory.ReadWrite.All%20Directory.AccessAsUser.All

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

https://graph.microsoft.com/v1.0/users
Authorization Bearer eyJ0eXAiOiJKV1QiLCJub25jZSI6IkFRQUJBQUFBQUFEQ29NcGpKWHJ4VHE5Vkc5dGUtN0ZYNndkRlV3aTBKbGlHcWhEWkgybFRlYWh6SUhUX0VsazFaYTFuUHRzNWo3SW5xMDBmbnNNRkpNUWRYdWdVZnpaZ0cxT19uenNPTXpwN2tpUFFIR2VHTnlBQSIsImFsZyI6IlJTMjU2IiwieDV0IjoiQ3RmUUM4TGUtOE5zQzdvQzJ6UWtacGNyZk9jIiwia2lkIjoiQ3RmUUM4TGUtOE5zQzdvQzJ6UWtacGNyZk9jIn0.eyJhdWQiOiJodHRwczovL2dyYXBoLm1pY3Jvc29mdC5jb20iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC80N2JlMGFiZi1jNmExLTRmMDQtYTY2NS1kY2ViMDgxYzRmZjEvIiwiaWF0IjoxNTYwMjUzMDE1LCJuYmYiOjE1NjAyNTMwMTUsImV4cCI6MTU2MDI1NjkxNSwiYWlvIjoiNDJaZ1lQajhVdnBwWGMySEU1WGZwbnZxSG43akFnQT0iLCJhcHBfZGlzcGxheW5hbWUiOiJUdXRvcmlhbCBTYW1wbGUgQXBwIiwiYXBwaWQiOiI2NzMxZGU3Ni0xNGE2LTQ5YWUtOTdiYy02ZWJhNjkxNDM5MWUiLCJhcHBpZGFjciI6IjEiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC80N2JlMGFiZi1jNmExLTRmMDQtYTY2NS1kY2ViMDgxYzRmZjEvIiwib2lkIjoiNjg0ZjkzMjUtNjUyNS00Yjk5LTgwNzktOTEyOGZjZWNlNGViIiwic3ViIjoiNjg0ZjkzMjUtNjUyNS00Yjk5LTgwNzktOTEyOGZjZWNlNGViIiwidGlkIjoiNDdiZTBhYmYtYzZhMS00ZjA0LWE2NjUtZGNlYjA4MWM0ZmYxIiwidXRpIjoiSkZjUE9SSHRGVTJMMWludEpkY2RBQSIsInZlciI6IjEuMCIsInhtc190Y2R0IjoxMzQ0Njc5MzA0fQ.fXEs7eClm5SYXychcKXbTfcc5gtvyyMa5fDWuGu2vqQ4Zc6V0jJSHSeksRiOzYE8SOJXRTmI9vJtbs2XIMFr0CRHeTgoCDReV8JWJ8yhOKiDnc-_2AHtSoBnqt6ibF0eX4AzkyioJd24-uYTSkheC_zDpd6GS3T5T077BU_1M7kpngXDfEICi38VkddcpdBUG8FgHUSPq0S9fCosIB4_JPwspq3QC6jJyoRrj1Yj2oR8FwBA1dpgWq_e0QoGnWXgT6EhBKedjY0hwHGY-F73ndvRlAKKW63JYucdOtRyC2zFDc4DPwhN1nyPlh86_Y0Zru8UTb0QgWRFKbGZwQcEOg

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

{
"error": {
    "code": "Authorization_RequestDenied",
    "message": "Insufficient privileges to complete the operation.",
    "innerError": {
        "request-id": "aa38f822-7325-44ad-9127-3cb4779578bf",
        "date": "2019-06-11T11:42:16"
    }
}

}

Обновлено: Включена конфигурация разрешения экрана

permission and consent

Вывод отладчика JWT для токенов:

{
  "aud": "https://graph.microsoft.com",
  "iss": "https://sts.windows.net/f77804fb-8607-4e96-9fae-231360cc82b7/",
  "iat": 1560273380,
  "nbf": 1560273380,
  "exp": 1560277280,
  "aio": "42ZgYKjulnV3u/vJZNN0gz3ld2ZpAwA=",
  "app_displayname": "clmapp",
  "appid": "82ad79f2-27c7-4304-92f6-e3ffdb637e72",
  "appidacr": "1",
  "idp": "https://sts.windows.net/f77804fb-8607-4e96-9fae-231360cc82b7/",
  "tid": "f77804fb-8607-4e96-9fae-231360cc82b7",
  "uti": "BpTbRLEb5ECSO3qjslIgAA",
  "ver": "1.0",
  "xms_tcdt": 1376441181
}

Ответы [ 2 ]

1 голос
/ 11 июня 2019

Вы можете попробовать следующий способ:

Разрешение:

Убедитесь, что у вас есть следующие разрешения :

enter image description here

Предоставить разрешение на портале Azure:

Шаг: 1

Выбрать Application PermissionВ API permissions меню

enter image description here

Шаг: 2

Выберите User.ReadWrite.All под Application Permission частьНо User.Read.All также в порядке.

enter image description here

Формат запроса токена:

URL: https://login.microsoftonline.com/YourTenant.onmicrosoft.com/oauth2/token

Для V2.0 URL: https://login.microsoftonline.com/YourTenant.onmicrosoft.com/oauth2/v2.0/token

HTTP Verb: POST

grant_type:client_credentials
client_id:b603c7be-a866-4-e6921e61f925
client_secret:Vxf1SluKbguf3wE5oGl/2XDSeZ8wL/Yp8ns4sc=
resource:https://graph.microsoft.com

Для объема V2.0 будет: scope:https://graph.microsoft.com/.default

См. Снимок экрана ниже:

enter image description here

Разрешение на декодирование токена и подтверждение:

Вы можете использовать https://jwt.io/ для декодирования своего токена, чтобы убедиться, что у вас есть необходимые разрешения: См. Снимок экрана ниже:

enter image description here

Запросыt Для списка пользователей:

С вашим запросом Token на этой конечной точке https://graph.microsoft.com/v1.0/users.Смотрите скриншот ниже.Я успешно получил весь список пользователей.

enter image description here

Примечание: Если у вас все еще есть какие-либо вопросы, не стесняйтесь поделиться.Спасибо и счастливого кодирования!

0 голосов
/ 11 июня 2019

При использовании потока OAuth 2.0 Client Credentials Grant значение вашей области должно использовать встроенную область .default для ресурса, к которому вы пытаетесь получить доступ. Это упомянуто в справочной статье: Платформа идентификации Microsoft и поток учетных данных клиента OAuth 2.0

В вашем случае вы пытаетесь получить доступ к ресурсу Microsoft Graph, поэтому ваше значение scope в запросе токена должно быть https://graph.microsoft.com/.default:

https://login.microsoftonline.com/{tenant-id-or-domain}/oauth2/v2.0/token
    &grant_type=client_credentials
    &client_id={client-id}
    &client_secret={client-secret}
    &scope=https%3a%2f%2fgraph.microsoft.com%2f.default

Обратите внимание, что для этого необходимо настроить необходимые разрешения приложения (портал Azure> Azure Active Directory> регистрации приложений> разрешения API) и предоставить :

Choose and grant required application permissions

...