Я следую пошаговому руководству на сайте Microsoft (https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow#refresh-the-access-token), все работает правильно, но каждый раз, когда я пытаюсь обновить токен доступа, я получаю эту ошибку: AADSTS70000: Предоставленное разрешение недействительно или неправильно сформировано.error_codes: 70000.
Я создал коллекцию почтальонов для тестирования, также загрузил официальную коллекцию почтальонов с сайта Microsoft, все работает правильно, пока не истечет срок действия маркера доступа. Когда он истекает, пытается обновитьтокен всегда приводит к ошибке, и я зацикливаюсь на ней. Я дважды и трижды проверял соответствие между ошибками redirect_url, разрешения, предоставления, копирования / вставки, ждал истечения срока действия access_token, прежде чем пытаться обновить ...Я сделал почти 100 тестов, и каждый раз, когда я застреваю в части обновления!
Я начинаю с обычного вызова API входа в Microsoft в моем браузере и получения кода в строке запроса из браузера.(здесь нет проблем) (обратите внимание, что client_id - это URL, закодированный впотому что в моей тестовой среде идентификатор клиента является URL-адресом из-за конфигурации используемого Drupal-портана, я пытаюсь воссоздать такое же поведение в почтальоне)
https://login.microsoftonline.com/{tenant_guid}/oauth2/v2.0/authorize?client_id={myclient_id_urlencoded}&response_type=code&redirect_uri={redirect_uri_urlencoded}&scope=offline_access%20https%3A%2F%2Fgraph.microsoft.com%2Fuser.read&state=12345
Затем с кодомв строке запроса я отправляю POST к конечной точке токена:
POST /{tenant_guid}/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-url-form-urlencoded
cache-control: no-cache
Postman-Token: a0456a8d-6979-491f-b61e-86b5d614c577
client_id={myclient_id_urlencoded}
scope=https%3A%2F%2Fgraph.microsoft.com%2Fuser.read
redirect_uri={redirect_uri_urlencoded}
grant_type=authorization_code
client_secret={client_secret_urlencoded}
code=OAQABAAIAAADCoMpjJXrxTq9VG9te-7FXujKZhF...
Я получаю обратно токен доступа (который работает как талисман при доступе к https://graph.microsoft.com/v1.0/me в течение часа) и токен обновления.Я хотел бы получить новую пару токенов доступа / обновления по истечении срока действия оригинального токена доступа, используя refresh_token grant_type
POST /tenant_guid/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-url-form-urlencoded
cache-control: no-cache
Postman-Token: 5d71f813-768e-476c-a97f-c109fba3165e
client_id={myclient_id_urlencoded}
scope=https%3A%2F%2Fgraph.microsoft.com%2Fuser.read
redirect_uri={redirect_uri_urlencoded}
grant_type=refresh_token
cclient_secret={client_secret_urlencoded}
refresh_token=OAQABAAAAAADCoMpjJXrxTq9VG9te-7FX8m6YMg-.....
Но неважно, если я попытаюсь до истечения срока действия токена доступа или после, закрытия и повторного открытия почтальонаЯ всегда получаю эту ошибку обратно.Я провел почти 50 тестов (всегда с полным циклом входа в систему / авторизации для использования всегда свежего токена обновления) без удачи.
Похоже, мне здесь не хватает чего-то действительно глупого, потому что я не могу представить, что все остальные ведут себя правильно ... но на самом деле не могут найти выход!