#node.js #microsoft-graph-api
Вопрос:
Я использую API Microsoft Graph для создания маркера доступа OAuth 2.0, срок действия которого истекает через 1 час. Используемый маршрут: https://login.microsoftonline.com/[Идентификатор арендатора]/oauth2/v2.0/токен Я передаю эти значения в строке запроса. { grant_type: «client_credentials», client_id: APP_ID
, client_secret: APP_PASSWORD
, область действия: «https://graph.microsoft.com/.default», }
Теперь моя текущая реализация Я добавил рекурсию, в которой я добавил повторные попытки перед вызовом api graph для извлечения сведений о пользователе из AD.
Есть ли способ получить/получить токен обновления, потому что токены обновления длятся дольше?
Ответ №1:
Вам необходимо выполнить следующие действия, чтобы включить токены обновления:
- Запросите область «offline_access». Это сообщит конечной точке о необходимости предоставить ключ обновления вместе с ключом доступа и связанными метаданными.
- Вам нужно запросить новый access_token (и refresh_token по мере их объединения), повторив одну и ту же ЗАПИСЬ в /common/oauth2/v2.0/токен с немного другим телом — для типа grant_type установлено значение refresh_token, и вместо кода вы указываете свойство и значение refresh_token
Например, для
POST /{tenant}/oauth2/v2.0/token
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
client_id=[client Id]
amp;scope=[scope]
amp;refresh_token=[refresh token]
amp;grant_type=refresh_token
amp;client_secret=[secret]
Пожалуйста, обратитесь к документации здесь для получения подробной информации о запросе токена обновления.
Комментарии:
1. Я не использую конечную точку авторизации, поэтому не получаю uri перенаправления и код, который передается в api /common/oauth2/v2.0/token. Я использую тип гранта в качестве учетных данных клиента, и если я заменю его на «offline_access», как вы сказали. Я получаю это в ответе: приложение запросило неподдерживаемый тип гранта ‘offline_access’
Ответ №2:
На мой взгляд, использование токена обновления вместе с потоком данных клиента бесполезно. Зачем вам добавлять дополнительный шаг для получения токена доступа, если вы можете получить его сразу?
Поток с типом предоставления client_credentials:
Шаг 1: аутентификация клиента
Маркер доступа OK выдан
Расход для получения маркер обновления
Шаг 1: аутентификация клиента
Шаг 2: Обновите проверку токена и используйте ее для получения токена доступа
Маркер доступа OK выдан.