Как вызвать azure graph api с помощью почтальона

Я пытаюсь вызвать граф API, чтобы получить информацию о пользователе. Я использую почтальона, чтобы сначала получить токен, а затем использовать этот токен, пытаясь сделать запрос к графическому API.

Я получаю токен с почтовым запросом ниже и с 4 ключевыми значениями для grant_type, client_id, client_secret and resource.

https://login.microsoftonline.com/{{tenantid}}/oauth2/token

Ответ

{
    "token_type": "Bearer",
    "expires_in": "3600",
    "ext_expires_in": "3600",
    "expires_on": "1555583717",
    "not_before": "1555579817",
    "resource": "https://management.azure.com/",
    "access_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxNiIsIng1dCI6IkhCeGw5bUFlNmd4YXZDa2NvT1UyVEhzRE5hMCIsImtpZCI6IkhCeGw5bUFlNmd4YXZDa2NvT1UyVEhzRE5hMCJ9.yyyyyyyLTBjYjZmZDNiM2UwNCIsInRpZCI6IjM3NGY4MDI2LTdiNTQtNGEzYS1iODdkLTMyOGZhMjZlYzEwZCIsInV0aSI6ImVWTWdDbkU4QWtPVXY3bFQ2QlRSQUEiLCJ2ZXIiOiIxLjAifQ.kxHCm2oGsuUvlXbncXQe7Wb0l-ZENqqG9_P_co0SPdYA3GkhFKDi6sQ7OaaHeDs4S6kN0-Diw5qBOzmFipSA5EUorA7UDbJfiSVVlaEzLY3IX_4WSV4Exc-kLOaX0j7KgvsEQbc5TEk8e4dPfokG98gGPmhy19xLyV84lX1v6DzgXINzP8gPkGmqR_J7iVFQ3m-Y18dHlxDpqQMTKxvQGnrsa7rflyxGUwEwwFZJH8t5NRv_mjQOIQBuosfhMAH88l-J8zEmXWLFqEzFBBWrz9UxT6X-XxRQZW4WBSoHTKd3vuBcEo6kUclfe4G7COOvI4zG0-j10mmGziKlzjNVMw"
}

Затем я использую токен, чтобы сделать запрос GET

https://graph.windows.net/{{company}}/users/{{email}}?api-version=1.6 

и заголовок

Key                     Value
Authorization         Bearer {{token}}

но не получается с этой ошибкой

{
    "odata.error": {
        "code": "Authentication_MissingOrMalformed",
        "message": {
            "lang": "en",
            "value": "Access Token missing or malformed."
        }
    }
}

Как правильно сделать запрос к графическому API?

Я думаю, когда вы получаете токен oauth2, это не просто access_token, а более сложный объект с несколькими токенами. Только access_token должен следовать за словом «Bearer». Но я не уверен.

Dimitri Bosteels 18.04.2019 11:23

Вы правы Дмитрий :) Также убедитесь, что ваш ресурс https://graph.windows.net

juunas 18.04.2019 11:28

Я добавил ответ от авторизации, но не уверен, что из этого извлечь. Не могли бы вы проверить?

user1298426 18.04.2019 11:39

Вы использовали неправильный ресурс. Токен, который вы получаете, предназначен для API управления Azure. Вам нужно запросить токен для AAD Graph API, установив для ресурса значение https://graph.windows.net

juunas 18.04.2019 16:32

Он говорит «значение»: «Недопустимое доменное имя в URL-адресе запроса».

user1298426 18.04.2019 16:57
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
5
5
8 697
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обновленный ответ в соответствии с вашим случаем

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

Шаг: 1: Регистрация приложения

Перейдите на свой лазурный портал и нажмите azure active directory. Теперь нажмите App registrations и введите имя для своего приложения. Убедитесь, что вы выбрали Web app / API в качестве типа приложения. Ставьте любые Sign on URL это ни на что не влияет.

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

Шаг:2 Конфигурация приложения

Настройте параметры приложения, нажав на опцию settings. Скопируйте Application Id, который является вашим идентификатором клиента. Создайте свой client_secret в меню Key. Теперь нажмите на опцию Required permission и нажмите Add в новом окне. Выберите Select an API выберите Microsoft Graph Затем выберите его.

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

Итак, конфигурация вашего лазурного портала настроена.

Шаг 3. Поток доступа к токену

Для получения токена я использую Процесс предоставления учетных данных клиента OAuth 2.0. Пусть запустится POSTMAN Введите конечную точку токена, как показано ниже:

https://login.microsoftonline.com/`YourTenantNameOrID`.onmicrosoft.com/oauth2/token

Введите следующие данные в правильном формате:

grant_type:client_credentials

client_id:Your Portal Application ID

client_secret:Your application Key

resource:https://graph.microsoft.com/

Note: I am using Microsoft Graph API so resource has chosen //graph.microsoft.com/

Смотрите скриншот для более подробной информации

Шаг: 4. Проверьте претензии вашего токена

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

См. изображение претензий ниже:

Шаг: 5 Получите доступ к ресурсу Microsoft Graph API

  1. Определите URL-адрес ресурса API Microsoft Graph

For example : https://graph.microsoft.com/v1.0/users

  1. Выберите HTTP-глагол API
  2. Выберите тип токена для токена на предъявителя
  3. Введите свой токен в текстовое поле левого токена

Вы закончили, нажмите «Отправить» и проверьте свой ответ, как и ожидалось. Подробности смотрите на снимке экрана.

Формат запроса:

Ответ от API:

Response From API

Note: Make sure you have resource access permission unless you would get access denied error.

Для получения дополнительной информации вы можете посмотреть здесь

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

Пробовал, но та же проблема. Возможно ли, что делегированных разрешений недостаточно?

user1298426 18.04.2019 16:57

@ user1298426 Не могли бы вы попробовать сейчас. Я обновил свой ответ с начала до конца. Тем не менее, если у вас есть какие-либо вопросы, не стесняйтесь спрашивать здесь в комментариях. Спасибо.

Md Farid Uddin Kiron 19.04.2019 08:13

Я не вижу ключ «scp» в своем токене. Значит ли это, что у меня нет доступа к API?

user1298426 19.04.2019 11:20

@user1298426 user1298426 Да, это ... поэтому назначьте разрешение на портале, как я объяснил выше. делайте именно то, что я сделал, вы получите ожидаемый результат. Если у вас все еще есть какие-либо проблемы, не стесняйтесь спрашивать. Спасибо.

Md Farid Uddin Kiron 19.04.2019 11:43

Другие вопросы по теме