Недопустимый грант (код ошибки 70000) токен обновления Azure AD - PullRequest
1 голос
/ 31 мая 2019

Я использую имя входа Azure AD для получения токена доступа и возможности сделать запрос к SharePoint Online с помощью API REST.

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

В данный момент я проверяю это с помощью Почтальона.

Я делаю следующее:

  • Я начинаю звонитьследующий URL, чтобы получить код:
https://login.microsoftonline.com/{tenant}/oauth2/authorize?client_id={client_id}&client_secret={client_secret}&response_type=code
  • Когда я получу код, я выполняю следующую POST:
POST /{tenant}/oauth2/token HTTP/1.1
Host: login.microsoftonline.com
User-Agent: PostmanRuntime/7.13.0
Accept: */*
Cache-Control: no-cache
grant_type:authorization_code
client_id:{client_id}
client_secret:{client_secret}
code:{code_generated_previous_request}
redirect_uri:https://myapplication.com
resource:https://{mycompany}.sharepoint.com/
  • Я получаю этот ответ:
{
    "token_type": "Bearer",
    "scope": "AllSites.FullControl Directory.ReadWrite.All Group.ReadWrite.All Sites.FullControl.All Sites.Read.All User.Invite.All User.Read.All User.ReadWrite.All",
    "expires_in": "3599",
    "ext_expires_in": "3599",
    "expires_on": "1559291698",
    "not_before": "1559287798",
    "resource": "https://{mycompany}.sharepoint.com/",
    "access_token": "XXXXXXXX...",
    "refresh_token": "YYYYYYYY...",
    "id_token": "ZZZZZZZZ..."
}
  • Наконец, я пытаюсь обновить токен, выполнив следующую POST:
POST /{tenant}/oauth2/token HTTP/1.1
Host: login.microsoftonline.com
User-Agent: PostmanRuntime/7.13.0
Accept: */*
Cache-Control: no-cache
grant_type:refresh_token
client_id:{client_id}
client_secret:{client_secret}
refresh_token:YYYYYYYY...
redirect_uri:https://myapplication.com
  • Но на этом шаге я получаю сообщение об ошибке:
    "error": "invalid_grant",
    "error_description": "AADSTS70000: Provided grant is invalid or malformed.\r\nTrace ID: XXXX\r\nCorrelation ID: XXXXX\r\nTimestamp: 2019-05-31 09:35:39Z",
    "error_codes": [
        70000
    ],
    "timestamp": "2019-05-31 09:35:39Z",
    "trace_id": "XXXX",
    "correlation_id": "XXXX"
}

Я проверил с помощью URL Encode, без URL-кодирования, удалил параметры client_secret и redirect_uri и другие вещи, но я всегда получаюта же ошибка.Конечно, я делаю глупую и очевидную ошибку, но я не вижу, какая именно.

1 Ответ

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

Кажется, вы пытаетесь обновить свой токен доступа, используя authorization code и refresh_token grant_type.

Я частично воспроизвел ошибку, с которой вы столкнулись. Как показано ниже:

enter image description here

Возможная причина ошибки:

  1. Хотя точная причина неизвестна!
  2. Я предполагаю, что ваш вставленный токен обновления недействителен. В этом случае Вы можете столкнуться с этой ошибкой.
  3. Вы должны вставить refresh_token, который вы получили на предыдущем шаги как есть. будь уверен, что сделал точно.

Разрешение ошибки:

Я делюсь точным способом достижения вашей цели. Пожалуйста, посмотрите ниже шаги

Шаг: 1

Я использую PostMan для этого случая. Пожалуйста, запустите PostMan, нажмите на вкладку Authorization и выберите Type, а OAuth 2.0, наконец, нажмите Get New Access Token. Смотрите снимок экрана ниже:

enter image description here

Шаг: 2

Когда вы нажмете Get New Access Token, появится новое окно, как показано на рисунке ниже. заполните это своими учетными данными.

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

https://login.microsoftonline.com/{TenantId/Name}/oauth2/authorize?client_id={applicationId}&response_type=code&redirect_uri={yourURI}&response_mode=query&scope={yourScope}

enter image description here

Когда вы нажмете кнопку Request Token, вы увидите окно входа в систему. Войдите с вашими учетными данными.

Шаг: 3

Откройте ваш postman console до входа, как показано ниже:

enter image description here

После успешного входа в систему. Вы получите свой код.

enter image description here

Шаг: 4

После успешного входа перейдите в сегмент postman console request body. Просто откройте его и скопируйте свой код. Смотрите снимок экрана ниже:

enter image description here

Шаг: 5

Скопируйте code и вставьте в authorization_code запрос токена code часть текстового поля. Вы получите свои access_token refresh_token и id_token

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

client_id: {ApplicationID}

объем: {YourTokenScope} * +1122 *

redirect_uri: {YourAppURI}

grant_type: authorization_code

client_secret: {YourApplicationSecret}

код: {CodeOfPreviousStep}

Точно так же, как показано ниже:

enter image description here

Шаг: 6

На этом шаге скопируйте ваш refresh token из предыдущего этапа (step 5) и вставьте рядом с текстовым полем refresh_token при запросе запроса grant_type:refresh_token. В ответ вы получите свои новые access_token и refresh_token

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

client_id: {ApplicationID}

объем: {} YourTokenScope

redirect_uri: {YourAppURI}

grant_type: refresh_token

client_secret: {YourApplicationSecret}

refresh_token: {refresh_token Of Предыдущий шаг}

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

enter image description here

Примечание:

  1. Убедитесь, что вы справляетесь точно code и refresh token
  2. Scope необязательно для обновления токена. Вы можете обновить свой токен без область, потому что ваш токен обновления уже содержит вашу область.

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

...