Ошибка: AADTS900144 — в теле запроса отсутствует параметр «grant_type»

Я столкнулся с проблемой при работе с аутентификацией Azure Active Directory. В частности, я получаю следующее сообщение об ошибке:

{"error":"invalid_request","error_description":"AADSTS900144: Тело запроса должно содержать следующий параметр: 'grant_type'.}

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

Конечная точка: https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token Метод запроса: POST Заголовки: «Content-Type»: «application/x-www-form-urlencoded» Тело запроса:

{
  "grant_type": "client_credentials",
  "client_id": {client_id},
  "client_secret": {client_secret},
  "scope": "https://graph.microsoft.com/.default"
}

Может кто-нибудь подсказать мне, как правильно включить параметр «grant_type» в тело запроса? Будем очень признательны за любые примеры или идеи о том, что может быть причиной этой проблемы.

Заранее спасибо за вашу помощь!

Я убедился, что тело запроса включает другие необходимые параметры, но параметр «grant_type», похоже, отсутствует или указан неправильно.

Как установить 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...
0
0
210
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы указываете: «Content-Type»: «application/x-www-form-urlencoded», но отправляете JSON.

Измените Content-Type на «application/json» или отправьте данные формы.

должно быть наоборот: спецификация определяет «application/x-www-form-urlencoded», поэтому тело должно быть не JSON, а скорее последовательностью параметров POST, закодированных в форме.

Hans Z. 11.06.2024 11:22
Ответ принят как подходящий

Ошибка произошла из-за того, что вы передали неверный тип контента при создании токена.

Первоначально я получил ту же ошибку:

Я согласен с @juunas: либо измените Content-Type to "application/json" и передайте данные json, ИЛИ Content-Type : application/x-www-form-urlencoded передайте тело как параметры POST, закодированные в форме.

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

https://login.microsoftonline.com/TENANTID/oauth2/v2.0/token

client_id:ClientID
client_secret:ClientSecret
grant_type:client_credentials
scope:https://graph.microsoft.com/.default

В противном случае вы также можете изменить Content-Type to "application/json" и передавать только данные JSON.

Привет @Rik, Что-то не работает должным образом с моим предложенным решением, поскольку я вижу отрицательный результат? Я хотел бы понять, если я что-то пропустил здесь.

Rukmini 11.06.2024 13:37

@Rik, у тебя была возможность проверить приведенный выше ответ и решил ли он проблему?

Rukmini 17.06.2024 11:44

Привет, я не минусовал это. У меня нет необходимого признания.

Rik 17.06.2024 15:11

@Rik Можете ли вы проверить приведенный выше ответ и сообщить мне, решил ли он проблему?

Rukmini 17.06.2024 15:12

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